危险的setInnerHTML反应打印'[object Object]'

ben*_*e89 5 javascript reactjs

我有我的元素:

dangerouslySetInnerHTML: { __html: this.props.html.map(React.renderToStaticMarkup).join('') }
Run Code Online (Sandbox Code Playgroud)

this.props.html 是一个React Elements数组(从这个方法构建):

makeOutput(model) {
    return <Key model={model} />;
}
Run Code Online (Sandbox Code Playgroud)

当我在断点处运行上面的代码时,我得到:

> this.props.html.map(React.renderToStaticMarkup).join('')
> "<span>b</span>"
Run Code Online (Sandbox Code Playgroud)

但是,当元素输出到DOM时,所有显示的都是[object Object].有什么理由吗?

Mic*_*ley 6

此示例表明该技术可以正常工作:

function makeOutput(text) {
  return <Wrapper text={text} />;
}

var Wrapper = React.createClass({
  render() {
    return <div>Wrapping: {this.props.text}</div>
  }
});

var App = React.createClass({
  render() {
    var items = [
      makeOutput("one"),
      makeOutput("two"),
      makeOutput("three")
    ];
    return (
      <div dangerouslySetInnerHTML={{__html: items.map(React.renderToStaticMarkup).join("") }} />
    );
  }
});

React.render(<App />, document.getElementById("container"));
Run Code Online (Sandbox Code Playgroud)

问题一定出在一些你还没有透露的代码上。