我发现自己正在将状态进行归集,通常是在我知道将要重新渲染的节点上,以便更改可以传播而且状态不会到处都是。最近,我发现自己大多数时候将此组件的状态作为属性传递给其第一个子级,使用JSX 扩展属性。请明确这是我的意思:
var Child = React.createClass({
handleClick: function(){
this.props.owner.setState({
count: this.props.count + 1,
});
},
render: function(){
return <div onClick={this.handleClick}>{this.props.count}</div>;
}
});
var Parent = React.createClass({
getInitialState: function(){
return {
count: 0,
owner: this
};
},
render: function(){
return <Child {...this.state}/>
}
});
它有效(http://jsbin.com/xugurugebu/edit?html,js,output),您始终可以返回该组件以了解发生了什么,并尽可能使状态最小化。
因此,实际问题是,这是否是一个好的做法,为什么。
我目前能想到的缺点是,采用这种方法可能会导致每个子组件在所有者状态更改时都重新渲染,如果是这种情况,则认为上述内容适用于小型组件树。
this.props.owner
更困难。 - stringparser