如何管理state
Last updated
Was this helpful?
Last updated
Was this helpful?
不要保存通过props计算的值,也不要保存render()不使用的状态。
组件改变状态的时候,props里的某些属性没有变化的话,就不用把这个属性赋值给组件的state,这样会造成重复。并且组件的state,只在组件第一次创建的时候才会赋值,当props改变的时候,state并不会改变。所以state要与props一致,还得在componentWillRecieveProps()这个生命周期里重新赋值。当然特殊的情况是例外的。
发请求获取表格数据,是个数组,给表格组件tab,
每一行的状态开关也是个组件,数组的每一项都有状态参数通过props给这个状态开关组件。
每个状态开关组件可以改变自身的状态,发送改变请求但是不重新渲染整个表格,也就是不发请求表格的数据的请求,因为可以改变自身的状态,我就把传过来的props给赋值到state,这样每一个组件改变自己的状态不用重新请求整个表格的数据。只是这样一来,state与props不一样。当通过批量操作改变状态时,也就是外界组件是会出现问题。外界只能改变的是props,但是我组件的状态显示是用的state。这样显示就会出问题。可以在componentWillRecieveProps()里让props与state一致。这样是解决了外界改变props的问题,可是当组件自身改变状态时,componentWillRecieveProps()也会触发,这样点击之后还是会还原成之前的状态,因为点击的时候props没有变化的。总是有冲突,目前我想到的办法是状态开关组件用props显示状态,改变自身的状态就重新获取整个表格的数据。但是这样就感觉不是我想预期的了。
我该怎样写