理解React的非DOM属性 --dangerouslySetInnerHTML

5,279 阅读1分钟

非dom标准属性,也就是说dom标准里面没有规定的属性,react引入了三个非dom属性,如下:dangerouslySetInnerHTML、ref、key

1、概念

我这次先介绍非DOM属性:dangerouslySetInnerHTML

从字面意思,危险的设置内部html,这个属性的作用就是在jsx中,直接插入html代码

我们为什么用这个属性插入html代码呢?而不是在编写代码的时候直接写入呢?因为有的时候我们在编写代码的时候,无法确定要插入什么代码,也就是说这部分html代码是动态生成的。
或者说不是由我们来编写的

2、示例

dangerouslySetInnerHTML 是 React 为浏览器 DOM 提供 innerHTML 的替换方案。

通常来讲,使用代码直接设置 HTML 存在风险,因为很容易无意中使用户暴露于跨站脚本(XSS)的攻击。因此,你可以直接在 React 中设置 HTML,但当你想设置 dangerouslySetInnerHTML 时,需要向其传递包含 key 为 __html 的对象,以此来警示你

如下代码所示:

function createMarkup() {
  return {__html: 'First · Second'};
}

function MyComponent() {
  return <div dangerouslySetInnerHTML={createMarkup()} />;
}

欧克,现在你应该会使用这个非DOM属性了。

                                                 祝大家变得更强!