在状态字符串中呈现html

qqi*_*row 7 html javascript reactjs

我使用setState来更新部分html,但我发现新的更新html没有呈现.这是代码,js小提琴:

HTML:

<div>hello<br />world<br /></div>
<div id='content'></div>
Run Code Online (Sandbox Code Playgroud)

JS:

var Main = React.createClass({
    getInitialState: function() {
        return {output: 'hello<br />world<br />'};
      },
    render: function() {
        return (
            <div>           
                {this.state.output}
            </div>
        );
        }
});

React.renderComponent(<Main/>, document.getElementById('content'));
Run Code Online (Sandbox Code Playgroud)

我省略了从服务器更新html的部分,但结果是一样的.如何让字符串处于状态?

Dav*_*ing 28

用于dangerouslySetInnerHTML在React中将HTML作为字符串注入(但请注意,React将无法在其虚拟DOM中使用此标记):

<div dangerouslySetInnerHTML={{__html: this.state.output}} />
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/5Y8r4/11/

执行此操作的API故意很复杂,因为这样做是不安全的.React对XSS提供了保护,dangerouslySetInnerHTML如果你没有对那些数据进行消毒,那么就可以使用它来规避那些并使你面临风险.

  • 存储HTML并不常见,但有时它是必要的(例如,您从服务器上生成安全的HTML用户数据,如堆栈溢出的注释,并需要呈现它). (3认同)
  • 什么是消毒这个HTML的最佳方法? (3认同)