HTML特殊字符(&符号)无法在React组件中呈现

时间:2017-12-24 17:06:59

标签: reactjs

考虑这个反应代码:

subTopicOptions = curSubTopics.map((topic) => {
    return (
        <option value={topic.id}>{topic.name}</option>
    )
});

要显示的其他API的topic.name输出Environment &amp; Forest值。

如何在选择字段中显示Environment & Forest

3 个答案:

答案 0 :(得分:3)

您可以使用浏览器的原生解析器,如Decode & back to & in JavaScript的最佳答案中所述。

使用DOMParser api,您可以执行以下操作:

const strToDecode = 'Environment &amp; Forest';
const parser = new DOMParser();
const decodedString = parser.parseFromString(`<!doctype html><body>${strToDecode}`, 'text/html').body.textContent;
console.log(decodedString);

你正在做的是使用DOMParser创建一个HTMLDocument,方法是将我们的字符串附加到'<!doctype html><body>'的末尾进行解码。然后,我们可以在新创建的HTMLDocument主体的textContent中访问字符串的解码值。

答案 1 :(得分:1)

如果您可以控制创建主题,则可以使用dangerouslySetInnerHTML

subTopicOptions = curSubTopics.map((topic) => {
    return (
        <option value={topic.id} dangerouslySetInnerHTML={{__html: topic.name }} />
    )
});

您应该知道使用innerHTML可以打开您的跨站点脚本(XSS)攻击,因此明智地使用它。

答案 2 :(得分:0)

const getDecodedString = (str) => {
    const txt = document.createElement('textarea');
    txt.innerHTML = str;
    return txt.value;
};