reactjs - 带有 defaultMessage 的 FormattedMessage 在控制台上显示错误
问题描述
我正在使用的应用程序可以选择为特定表单添加自定义字段,而这些字段不支持国际化。然而,由于我们项目中的组件,即使在添加后defaultMessage
,FormattedMessage
我们也会收到以下错误:
[React Intl] Missing message: "Custom Field #01" for locale: "en", using default message as fallback.
下面是我们的 BaseInput 是如何实现的。
class BaseInput extends Component {
render() {
let { id, style, label, required, errorMessage } = this.props;
let errorClass = errorMessage ? "text-field-error" : "";
return (
<div className={errorClass} style={style}>
<label
id={`${id}_label`}
name={`${id}_label`}
className="ui-outputlabel"
>
<FormattedMessage id={label} defaultMessage={label} />
</label>
{required && <span className="wms-required-field"> *</span>}
{this.generateInput()}
{errorMessage && (
<div className={"ui-message-error ui-widget ui-corner-all"}>
<span id={`${id}_error`} className={"ui-message-error-detail"}>
<FormattedMessage id={errorMessage} />
</span>
</div>
)}
</div>
);
}
}
我知道 json 没有给定 id 的翻译。我遇到的问题是控制台上的错误消息,即使添加了 defaultMessage。有没有人对如何解决这个问题有任何建议?
提前致谢
解决方案
您可以通过实现提供程序的处理程序来防止丢失的消息在控制台中显示为错误onError
。这将覆盖写入控制台的默认行为。您可以选择吞下错误。
<IntlProvider locale={locale} messages={messages} onError={handleTranslationError}>
...
</IntlProvider>
处理程序
const handleTranslationError = err => {
// swallow error
};
推荐阅读
- php - 如何解析嵌套的 json 并存储到 mysql 数据库中?
- angular - 使用手风琴在垫子表中获取手风琴打开关闭状态 - Angular7
- swift - 使用 didFinishPickingMediaWithInfo 方法时无法使用类型为“(Int,@escaping()->())”的参数列表调用“UIImage”错误
- python-3.x - 如何为每个脚本运行创建一个动态列表以读取和更新
- c# - 使用 TextTransform.exe 从命令行生成 T4 的问题
- angular - 带有 Angular 的 Docker 给出错误“未找到 'AppModule' 的 NgModule 元数据中的错误。”
- r - R 包 Googleway。函数:google_map()。参数: search_box 。控制参数:SIZE
- node.js - 无法解码亚马逊广告 API 下载报告
- xml - XQuery 获取没有命名空间的节点
- javascript - NPM 未安装所需的依赖项