Jac*_*chi 6 javascript reactjs
我知道直接修改状态而setState(...)不会自动更新UI,但我仍然可以这样做:
this.state.myValue = "foo";
this.forceUpdate();
Run Code Online (Sandbox Code Playgroud)
我也知道React等待某些时刻在一次通过中更新几个组件,但是有没有令人信服的理由为什么我不应该直接改变状态setState(...)?
有两种情况直接改变状态对我有益:
如果我必须修改一个非常长的数组的元素,setState(...)那么与每次复制整个数组的非浅的性能增益相比,"集群更新" 的性能增益可以忽略不计.
如果我在状态的2个不同属性中有2个对同一对象的引用,并且我想修改此对象,我宁愿对单个属性进行此修改,但如果我使用setState(...),则会复制该对象并丢失引用.
谢谢您的帮助.
如果直接修改状态,同时其他一些逻辑也会更新状态。不能保证您具有正确的状态或其他逻辑具有正确的状态。
它可能会给您带来不可预测的结果和行为。因此,始终建议仅使用 setState(),因为这是异步的,并且状态更新是不可变的。
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |