Javascript 当我在react中更新状态时,这就是我避免状态突变的方法吗?
我读到我应该使用函数setState,也不要改变我的状态 是这样吗Javascript 当我在react中更新状态时,这就是我避免状态突变的方法吗?,javascript,reactjs,Javascript,Reactjs,我读到我应该使用函数setState,也不要改变我的状态 是这样吗 onChangeTextInput = ({ name, value }) => { this.setState(state => ({ ...state, form: { ...state.form, [name]: value } })); }; 以上是您尝试执行的操作的简单形式。当它说“不直接变异”时,它的意思是不要做类似
onChangeTextInput = ({ name, value }) => {
this.setState(state => ({
...state,
form: {
...state.form,
[name]: value
}
}));
};
以上是您尝试执行的操作的简单形式。当它说“不直接变异”时,它的意思是不要做类似于
this.state.form=newObj
Yes:)的事情。如果您对提供的答案感到困惑,当您设置状态属性时,此更新的属性将与状态合并。因此,这里不必要的部分是…state
。您只需设置表单
属性。状态
在代码中未定义。OP做得不错。现在,您应该在这里使用functionalsetState
,因为这取决于代码中的当前状态。同样,OP做得不错:)@devserkan:我想把它改成this.state.form好吗?无论如何,我的答案正是你要指出的一点,…state
是不必要的,我们可以直接将对象传递给setState,而不是function是的,…state
是OP代码中不必要的部分,但它不会损害任何东西。由于您已经提供了答案,如果您使用功能性设置状态
更改代码,并解释为什么不需要…状态
部分,则OP可以接受。这里需要功能性部分,而不是提供对象。因为我们依赖于当前的状态。因此,我们应该避免直接设置状态。
this.setState({ form: {...this.state.form, [name]: value }});