我需要将对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"));
这是正常行为吗?有没有办法处理这个目标?
答案 0 :(得分:1)
问题是您使用的是ReactDOM.render
方法。它将创建一个新的React组件根,它与原始组件根完全隔离。所以你不能指望它的正常行为。
如果你想将ContainerContents
渲染成一个特定的div,那么现在在React中有点困难。这answer可能对您有帮助。但是,只需删除ReactDOM.render
并且只保留React.createElement
即可。实际上,这就是JSX在编译过程中转换为JavaScript时所获得的。