React.createElement并接收道具的变化

时间:2017-06-17 12:00:44

标签: reactjs

我需要将对props进行的更改反映到React.createElement生成的组件实例中。 (道具在他们所属的地方被改变,不是在孩子身上)。

显然,如果我在JSX中生成一个类,componentWillReceiveProps会触发:

<ContainerContents window_width={this.state.window_width} window_height={this.state.window_height} />

但如果使用componentWillReceiveProps生成完全相同的组件类实例,则React.createElement不会触发:

ReactDOM.render(React.createElement(ContainerContents, {window_width: this.state.window_width, window_height: this.state.window_height}), 
        document.getElementById("someDOMElementID"));

这是正常行为吗?有没有办法处理这个目标?

1 个答案:

答案 0 :(得分:1)

问题是您使用的是ReactDOM.render方法。它将创建一个新的React组件根,它与原始组件根完全隔离。所以你不能指望它的正常行为。

如果你想将ContainerContents渲染成一个特定的div,那么现在在React中有点困难。这answer可能对您有帮助。但是,只需删除ReactDOM.render并且只保留React.createElement即可。实际上,这就是JSX在编译过程中转换为JavaScript时所获得的。