reactjs - 如何在 JSX 中将返回的字符串重新呈现为 JSX
问题描述
我已经使用 React 构建了一个表单应用程序。我正在使用我认为非常棒的 useState 和 useEffect。为简洁起见,我在下面列出了我正在努力实现的目标。
import DATA from './data.json'
const [language, setLanguage] = useState('english');
const [firstName, setFirstName] = useState('Bob');
function App() {
const getTranslation = (reference) => {
let dictionary = DATA[language]
return dictionary[reference]
}
return (
<React.Fragment>
<h1>{getTranslation('HowCanWeHelp')}</h1>
</React.Fragment>
);
}
我正在尝试构建自己的简单语言翻译机制,从 JSON 文件中提取字符串。
从 DATA['english'][HowCanWeHelp] 返回的数据是{firstName}, How can we help you?
.
返回什么
{firstName}, How can we help you?
预期什么
Bob, How can we help you?
我不确定这是否可能,但我可以在 JSX 中重新渲染 JSX 吗?我试过用React.Fragment
标签包装,dangerouslySetInnerHTML
用React.createElement
. 一个正确方向的点将不胜感激。
我已阅读以下 stackoverflow 问题,但答案对我来说毫无意义。
解决方案
大多数国际化库默认都带有此功能。例如。一个流行的 React 国际化库,i18next可以通过以下方式实现它:
i18next.t('HowCanWeHelp', { firstName: "name" });
如果您不想要一个完整的国际化解决方案而更喜欢自己的字典解决方案,您可以使用像pupa这样的微模板库
import pupa from "pupa";
return (
<React.Fragment>
<h1>{
pupa(getTranslation('HowCanWeHelp'), {
firstName: "name"
})
}</h1>
</React.Fragment>
);
推荐阅读
- reporting-services - Reporting Services 中的分组
- python - 将列添加到多索引作为其他两个 level=0 列的比率
- html - 无法覆盖列表样式类型
- php - WordPress 版本更新后无法下载 CSV
- junit - 带有 Mockito 的 Powermock - 依赖问题
- django - 在自定义 django 查询集中使用自定义模型方法
- python-3.x - 在 Python 中构建 RFQ 聊天机器人的步骤
- c++ - 奇怪的浮点异常c++(指针赋值)
- c - 在 C 中搜索子字符串
- python - 如何在我的 Django 模板上删除“未设置密码”以编辑个人资料