Reactjs 如何处理React Intl消息的多次使用?

Reactjs 如何处理React Intl消息的多次使用?,reactjs,react-intl,Reactjs,React Intl,我在react intl文档(我使用的是v2分支)中找不到关于这种用法的任何信息,因此出现了这个问题。对于以下用例是否有推荐的方法 假设我有两个组件,Tooltip和Select。两者都需要相同的i18n格式字符串,例如: <FormattedMessage id='ui.widget.cycleOffsetSelector.timeCycle.label' defaultMessage="This {cycle}" values={{cycle: props.cy

我在
react intl
文档(我使用的是
v2
分支)中找不到关于这种用法的任何信息,因此出现了这个问题。对于以下用例是否有推荐的方法

假设我有两个组件,
Tooltip
Select
。两者都需要相同的i18n格式字符串,例如:

<FormattedMessage
    id='ui.widget.cycleOffsetSelector.timeCycle.label'
    defaultMessage="This {cycle}"
    values={{cycle: props.cycle}}
/>

如何在其他组件中使用相同的消息?就用这个,

<FormattedMessage
    id='ui.widget.cycleOffsetSelector.timeCycle.label'
    values={{cycle: props.cycle}}
/>

不工作(不应:))。那么,正确的方法是什么呢?
我是否必须在我的应用程序中全局保留这些共享消息?因为将“共享”intl消息列表与代码分开维护会变得很麻烦,
react intl
声称要解决的问题。

在react intl v2中,消息ID是静态的,因此没有两个ID是相同的。其思想是将组件中使用的资产保存在同一个文件中,以便于开发。然后在构建时提取字符串进行翻译。很多时候,这个问题可以通过创建一个高阶组件(HOC)或创建一个要重用的组件来解决,而不是重用消息字符串

如果不选择创建HOC,那么这里还有一些处理此问题的方法:


您可以在集中式消息文件中使用来定义重用的公共字符串,从而保留仅用于这些组件中特定组件的字符串


名称空间ID也是一种可能性

ui.widget.cycleOffsetSelector.timeCycle.select.label ui.widget.cycleOffsetSelector.timeCycle.tooltip.label


这是react intl?v2的v1还是v2。对不起,忘了提这个问题。我没有答案,但您可以根据直接使用该功能。谢谢您的回答。我已经将公共字符串集中到一个共享位置。这是开发的最佳方法,而且更容易重构。