[英]How to use <Link /> component inside dangerouslySetInnerHTML
[英]dangerouslySetInnerHTML and <Link>
我的页面需要本地化。 我使用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, ''));
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.