我在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
声称要解决的问题。
发布于 2016-05-24 06:09:36
在react-intl v2中,消息In是静态的,所以没有任何2个In可以是相同的。这样做的目的是保留在同一文件中的组件中使用的资产,以便于开发。然后在构建时提取字符串以进行翻译。很多时候,这个问题可以通过创建一个高阶组件(HOC)或者创建一个组件来重用,而不是重用一个消息字符串来解决。
如果创建一个临时选项不是一种选择,那么这里还有几种处理此问题的方法:
可以在集中式消息文件中使用defineMessages()来定义可重用的公共字符串,同时保留仅针对这些组件中特定组件的字符串。
命名步长ids也是一种可能性。
ui.widget.cycleOffsetSelector.timeCycle.select.label ui.widget.cycleOffsetSelector.timeCycle.tooltip.label
https://stackoverflow.com/questions/34876767
复制相似问题