有如下代码:1
2
3
4
5
6
7
8
9export default class Test extends Component{
render() {
let valueText = "<font color='#f00'>ABC</font>";
return(
<div>{valueText}</div>
);
}
}
我的设想是要界面上显示字体颜色为红色,内容为ABC的文本。理想很丰满,现实很骨感。界面上原模原样显示了: ABC
要实现设想,要这么写即可:1
2
3
4
5
6
7
8
9export default class Test extends Component{
render() {
let valueText = "<font color='#f00'>ABC</font>";
return(
<div dangerouslySetInnerHTML={{ __html: valueText }}> </div>
);
}
}
这是reactjs官方的实现机制,避免XSS(cross-site scripting)攻击:
所谓XSS,中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻击。