【发布时间】:2019-03-15 15:54:09
【问题描述】:
我有一个navigation,其中包含以下标准项目:联系人、服务、价格等...我将其呈现如下:
const menuItemList = menuItems.map((item, index) => {
return (
<li key={index}>
<NavLink to={item.url}>{item.title}</NavLink>
</li>
);
});
它工作正常。但现在我需要翻译这个导航,为此我使用react-intl 库。根据react-intldoc,我必须像这样使用FormattedMessage:
<p>
<FormattedMessage id="mainText"/>
</p>
它有效。但是我如何将它用于列表渲染?我认为它可以解决这个问题,但事实并非如此。
const menuItemsList = menuItems.map((item, index) => {
return (
<li key={index}>
<NavLink to={item.url}>
<FormattedMessage id="mainText" values={item.title}/>
</NavLink>
</li>
);
});
伙计们,请帮忙。如何使用来自react-intl 的FormattedMessage 呈现包含React 中的项目的列表?
【问题讨论】:
-
你做错的第一件事是你传递了 values 属性。使用声明式 api,您需要为每个组件消息设置一个 id。每个标签都应该是唯一的。您应该做的是更改ID。您的本地化文件应该包含键值字符串,即内容为 { "app.title": "Hello!"} 的 en.json 文件。然后假设您有一个内容为 { "app.title": "Hallo!"} 的 de.json 文件。然后,当您在 NavLink 菜单中进行迭代时,您必须在 id 属性中传递“app.title”。
-
包装应用程序的 intlProvider 将负责加载本地化消息并根据环境呈现消息,因此当您调用声明性 api (
时,您只需要关心在里面有正确的ID。)
标签: javascript reactjs react-intl