Javascript 插入数组时发生变异-Reactjs
我有一个状态对象,看起来像这样Javascript 插入数组时发生变异-Reactjs,javascript,reactjs,Javascript,Reactjs,我有一个状态对象,看起来像这样 this.state = { formValues: {}, }; 经过一些处理后,formValues包含以下内容 this.state = { formValues: { q1: value 1, q2: value 2 }, }; 现在我在formValues中有了q3,这是一个值数组。当我尝试按下如下所示的值时 l
this.state = {
formValues: {},
};
经过一些处理后,formValues包含以下内容
this.state = {
formValues: {
q1: value 1,
q2: value 2
},
};
现在我在formValues中有了q3,这是一个值数组。当我尝试按下如下所示的值时
let q3 = e.target.name,
arrayValues = [1,2,3]
formValues[q3].push(arrayValues)
我在提交数据时遇到以下错误
未捕获错误:在调度之间检测到状态突变
将数据推送到数组中似乎有问题。您知道如何解决此问题吗?您需要创建一个副本,并使用
setState
更新状态,而不是使用push
直接进行状态突变
this.setState(prevState => ({
formValues: {
...prevState.formValues,
[q3]: prevState.formValues[q3].concat(arrayValues),
},
}));
假设您始终希望推送到阵列,例如在您的用例中:
const{formValues}=this.state
常量数组值=[1,2,4]
const newFormValues={…formValues,q3:[…formValues[q3],arrayValues]}
this.setState({formValues:newFormValues})
但如果直接控制q3的值,效果会更好:
const{formValues}=this.state
常量数组值=[1,2,4]
const newFormValues={…formValues,q3:arrayValues}
this.setState({formValues:newFormValues})