Intl.NumberFormat.formatToParts 不是函数

Posted

技术标签:

【中文标题】Intl.NumberFormat.formatToParts 不是函数【英文标题】:Intl.NumberFormat.formatToParts is not a function 【发布时间】:2021-10-11 04:24:53 【问题描述】:

我在 React Native 中使用 Intl 命名空间来进行一些货币和公制金额格式化(W.h 等) 使用 formatToParts 方法时,在 iosandroid 调试模式下一切正常。但在 Android 开发模式下,出现以下错误:

Intl.NumberFormat(_i18nJs.default.locale,options).formatToParts is not a function. (In 'Intl.NumberFormat(_i18n.Js.default.locale,options).formatToParts(value)','Intl.NumberFormat(_i18nJs.default.locale,options).formatToParts' is undefined)

在发布模式下,我使用此功能的屏幕使应用程序崩溃

代码:

public static formatNumberWithCompacts(value: number, options: FormatNumberOptions = ): FormatNumberResult 
    const isCompactForm =
      options.notation === NumberFormatNotationEnum.COMPACT &&
      (!options.compactThreshold || (options.compactThreshold && value > options.compactThreshold));
    const isCurrency = options.currency && options.style === NumberFormatStyleEnum.CURRENCY;
    options.currency = options.currency || I18nManager.currency;
    const isUnit = options.unit && options.style === NumberFormatStyleEnum.UNIT;
    const isPercent = options.style === NumberFormatStyleEnum.PERCENT;

    if (!isCompactForm) 
      delete options.notation;
    
    // Format the given value with the given options
    const parts = Intl.NumberFormat(i18n.locale, options).formatToParts(value);

【问题讨论】:

您能在调用 Intl.NumberFormat.formatToParts 的地方分享您的代码吗? 当然,完成! 【参考方案1】:

我通过将此处指示的所有 polyfill 导入添加到我的 index.ts 来解决此问题: https://github.com/web-ridge/react-native-paper-dates/releases/tag/v0.2.15

我还必须按照 Format.js 文档中的说明预先安装每个 polyfill:https://formatjs.io/docs/polyfills

【讨论】:

以上是关于Intl.NumberFormat.formatToParts 不是函数的主要内容,如果未能解决你的问题,请参考以下文章