javascript - angerlySetInnerHTML 和 <Link>

标签 javascript reactjs gettext

我的页面需要本地化。我用的是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 - angerlySetInnerHTML 和 <Link>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025373/

相关文章:

python - Mac OS X 上的 pygettext.py 和 msgfmt.py

javascript - 在 React Component 中嵌入动画 SVG

c# - 读取具有多个具有相同名称的类的子控件的子控件?

javascript - 防止 Node.js 中的 SQL 注入(inject)

javascript - Angular : compile google maps infoWindow content to use ng-click

javascript - ngRepeat : filter not working when using track by $index

Javascript - 如何取消底层引用?

javascript - onPress 按钮在按下时不起作用

reactjs - 在react-router-dom v6中使用<Routes>,<Route>和<Navigate>的问题

python - i18n 与 jinja2 + GAE