gpt4 book ai didi

javascript - dangerouslySetInnerHTML 和

转载 作者:行者123 更新时间:2023-11-29 23:28:53 25 4
gpt4 key购买 nike

我的页面需要本地化。我使用gettext。我的i18n.__函数返回翻译后的字符串并替换 %s带有提供参数的符号。

据我所知,我不能“危险地设置” JSX 元素,但是我需要插入开始和结束 <Link>标签。我无法将字符串拆分成多个部分,因为后端为我提供了这样的功能。

我愿意接受任何想法。

这是我的 div元素:

<div                                
dangerouslySetInnerHTML={{ __html: i18n.__('Feel free to %scontact us%s if you have found a bug.', ['<Link to="/info">', '</Link>']) }}
/>

最佳答案

我找到的解决方案是您使用 <a>标签而不是 <Link>标记并摆弄 onClick整个包装上的事件。它是这样的:

<div
onClick={(e) => {
this.navigate(e);
}}
>
...
<div
dangerouslySetInnerHTML={{ __html: i18n.__('Feel free to %scontact us%s if you have found a bug.', ['<a href="/info">', '</a>']) }}
/>
...
</div>

还有 navigate函数检查您是否点击了 <a>标记并阻止重定向 event.preventDefault() .然后历史被“推送”:

navigate(event) {
const siteUrl = "https://www.test.com";
if (event.target.tagName === 'A') {
const href = event.target.getAttribute('href');
if (href.indexOf('mailto:') === -1) {
event.preventDefault();
this.props.history.push(href.replace(siteUrl, ''));
}
}
}

关于javascript - dangerouslySetInnerHTML 和 <Link>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com