修改 prevState 的一部分并在 setState() 中返回该部分是否有真正的缺点?
例子:
this.setState(prevState => {
prevState.myObject.isItTrue = !prevState.myObject.isItTrue;
return {myObject: prevState.myObject};
});
Run Code Online (Sandbox Code Playgroud)
而不是:
this.setState(prevState => {
const myObject = Object.assign({}, prevState.myObject);
myObject.isItTrue = !myObject.isItTrue;
return {myObject: myObject};
});
Run Code Online (Sandbox Code Playgroud)
我保存自己的第一个代码有什么真正的缺点Object.assign()吗?
编辑:如果我是对的,prevState.myObject 只是对 this.state.myObject 的引用,因此更改 prevState.myObject 实际上也会更改 this.myObject.object!然而,这似乎并没有破坏任何东西,只要我使用 setState() 传递一个包含新数据的对象,即使它只是对 this.state 中旧对象的引用。您是否同意这仍然可以,即这样做不会破坏任何事情?
以下文档:
state是对应用更改时组件状态的引用。它不应该被直接变异。相反,应该通过基于 state 和 props 的输入构建一个新对象来表示更改。
https://reactjs.org/docs/react-component.html
因此,您不应直接将更改应用于该状态。
无论哪种方式,为什么不做这样的事情?:
this.setState(prevState => ({
myObject : {
...prevState.myObject,
isItTrue: !prevState.myObject.isItTrue,
}
}));
Run Code Online (Sandbox Code Playgroud)
这种方式将从prevState 中获取所有元素,但也会更改所有要修改的元素。
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |