localization - 如何使用 useIntl 钩子和本地化数组元素
问题描述
我有一个基本的反应功能组件,我绑定了一个数组,其中有要本地化的字符串。还有其他方法吗?我正在尝试如下,它说“无效的挂钩呼叫”
import { useIntl } from "react-intl";
const NavBasicExample: React.FunctionComponent = () => {
return (
<Nav
groups={navLinkGroups}
/>
</div>
);
};
const navLinkGroups: INavLinkGroup[] = [
{
name: getFormattedString(Strings.details),//This fails and says invalidHookCall
links: [{ name: Strings.appDetails, url: "" }]
},
{
name: Strings.capabilities,
links: [
{ name: Strings.tabs},
{ name: Strings.bots}
]
}
];
const getFormattedString = (inputString: string) => {
const intl = useIntl(); //This fails.
return intl.formatMessage({ id: "details", defaultMessage: "Login });
};
解决方案
问题是您正在从非反应函数调用 Hook。你不能这样做。尝试将“navLinkGroups”移动到“NavBasicExample”中,它应该可以工作
import { useIntl } from "react-intl";
const NavBasicExample: React.FunctionComponent = () => {
const intl = useIntl();
const navLinkGroups: INavLinkGroup[] = [
{
name: getFormattedString(Strings.details),
links: [{ name: Strings.appDetails, url: "" }]
},
{
name: Strings.capabilities,
links: [
{ name: Strings.tabs},
{ name: Strings.bots}
]
}
];
const getFormattedString = (inputString: string) => {
return intl.formatMessage({ id: "details", defaultMessage: "Login" });
};
return (
<Nav
groups={navLinkGroups}
/>
</div>
);
};
推荐阅读
- excel - 检索查询结果并将其复制到excel
- haskell - 最长公共子列表
- javascript - 在可排序的 JQuery 中动态地将索引值分配给列表元素值
- php - 如何根据 laravel 查询生成器或 sql 中的日期更新表
- amazon-web-services - 在 AWS 上使用 ejabberd 处理 5M 并发会话
- c# - 找不到 System.ArgumentNullException 的修复:值不能为空
- ios - xcode 调试器说由于 swift 4 中的内存问题而终止
- ember.js - Ember js 属于关系
- java - 无法否定 YAML 文件中的 spring 默认配置文件
- android - 找不到满足版本约束的“com.android.support:support-annotations”版本