str*_*ser 17 javascript reactjs
我发现自己在一个组件上聚合状态.通常我知道的节点我将重新渲染,因此变化可以传播,并且状态不是全部.最近,我发现自己将这个组件的状态作为道具传递给第一个使用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}/>
}
});
Run Code Online (Sandbox Code Playgroud)
它的工作原理(http://jsbin.com/xugurugebu/edit?html,js,output),你可以随时回到这个组件来了解最新情况并尽可能保持最小状态.
所以实际的问题是,如果这不是一个好的做法,为什么.
我现在可以考虑的缺点是,使用这种方法,当所有者状态发生变化时,每个子组件都可能会重新渲染,如果是这种情况,我认为上面的内容可以在小组件树上使用.