首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何处理多个使用一个React Intl消息?

如何处理多个使用一个React Intl消息?
EN

Stack Overflow用户
提问于 2016-01-19 12:24:49
回答 1查看 5.8K关注 0票数 7

我在react-intl文档中找不到任何关于这种使用的东西(我使用的是v2分支),因此出现了这个问题。下面的用例有推荐的方法吗?

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

代码语言:javascript
代码运行次数:0
运行
复制
<FormattedMessage
    id='ui.widget.cycleOffsetSelector.timeCycle.label'
    defaultMessage="This {cycle}"
    values={{cycle: props.cycle}}
/>

如何在其他组件中使用相同的消息?只是用这个:

代码语言:javascript
代码运行次数:0
运行
复制
<FormattedMessage
    id='ui.widget.cycleOffsetSelector.timeCycle.label'
    values={{cycle: props.cycle}}
/>

不起作用(不应:)。那么,正确的方法是什么呢?我必须在我的应用程序中将这些共享消息保存在全球的某个地方吗?因为维护独立于代码的“共享”intl消息列表会变得非常麻烦,这正是react-intl声称要解决的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-24 14:09:36

在react-intl v2中,消息In是静态的,所以没有任何2个In可以是相同的。这样做的目的是保留在同一文件中的组件中使用的资产,以便于开发。然后在构建时提取字符串以进行翻译。很多时候,这个问题可以通过创建一个高阶组件(HOC)或者创建一个组件来重用,而不是重用一个消息字符串来解决。

如果创建一个临时选项不是一种选择,那么这里还有几种处理此问题的方法:

可以在集中式消息文件中使用defineMessages()来定义可重用的公共字符串,同时保留仅针对这些组件中特定组件的字符串。

命名步长ids也是一种可能性。

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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34876767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档