javascript – 反应使用dangerouslySetInnerHTML来渲染带有html标签的json

我试图在列表中的字符串中呈现带有html标记的json列表,如下所示 jsbin.它在Jsbin中工作.但在我的控制台中,我收到了以下警告:

warning  Only set one of `children` or `props.dangerouslySetInnerHTML` react/no-danger-with-children

只是想知道是否有其他方法使用dangerouslySetInnerHTML呈现列表以避免警告?

const displayList = [
    {
        item: 1,
        text: "<strong>ABC</strong> this should be strong."
    },
    {
        item: 2,
        text: "<a>ABC</a> this should be link."
    },
    {
        item: 3,
        text: "normal text"
    }
];

const App = () => (
    <ul>
        {displayList.map((item, i) => (
            <li key={i}>
                <div dangerouslySetInnerHTML={{
                    __html: item.text
                }}>
                </div>
            </li>
        ))}
    </ul>
);

ReactDOM.render(
    <App />,
    document.getElementById('root')
);

最佳答案 React抱怨使用dangerouslySetInnerHTML和安全反应的孩子,当你让div标签打开到这样的特征< div>打开并准备好孩子< / div>时发生这种情况.

由于您使用的是JSX语法扩展,因此这里的解决方案是将整个句子写成一行:

<div dangerouslySetInnerHTML={{__html: item.text}}></div>

或者只使用单例div标签:

<div dangerouslySetInnerHTML={{
       __html: item.text
     }}/>

顺便说一下,你没有在jsbin上得到错误,因为它是一个反应生成版本,这个版本并不是要告诉你什么可以写得更好.

点赞