Reactjs:为什么子组件不会在数据更改时重新呈现?

时间:2014-05-22 07:27:42

标签: javascript reactjs

当根组件的状态发生变化时,React.js会重新渲染所有子组件(子组件)吗?

请看一下这个例子: http://jsfiddle.net/F8H7p/8/

在上面的示例中,当Search组件的状态发生更改时,只有Dashboard个子组件会重新呈现。但其他子组件 - Section,Chart&小部件不会重新渲染。

这就是我的renderComponent的样子:

React.renderComponent(Dashboard({title: "D", children: [Section({title: "S", children: [Widget({title: "W"}), Chart()]})]}), document.body);

任何想法为什么?

1 个答案:

答案 0 :(得分:5)

更新仪表板时,React会重新渲染由仪表板渲染方法创建的每个组件。在这种情况下,您通过this.props.children传递组件,因此预计它们不依赖于Dashboard的状态,因此它们不会被重新渲染。

如果您的应用不是这种情况,您可能希望创建一个处理此状态的更高级页面组件,并将Dashboard组件及其子项一起呈现。使用该结构,您的renderComponent调用将类似于:

React.renderComponent(Page(), document.body);