我有一个处于状态的数组,并且想要根据索引来更改数组,这是我使用的方法
dynamicFieldsOnChange(e, index) {
this.setState({[product_colors[index]]: e.target.value});
};
但是它为什么没有任何作用?
答案 0 :(得分:0)
使用
直接更新状态值this.state[e.target.id] = e.target.value
是一个坏习惯。您应该始终避免这种情况。
相反,您应该这样做,
this.setState({[e.target.id] : e.target.value});
这会将id设置为本地状态。
答案 1 :(得分:0)
您需要使用prevstate回调事件首先获取先前的状态。如果要保留数组的所有元素。传播prevState。然后调用product_colors,然后传递修改后的数组。
赞:
dynamicFieldsOnChange(e,index)
{
this.setState( (prevState) => {
prevState.product_colors[index] = e.target.value
return{
...prevState,
product_colors: [...prevState.product_colors]
}
});
};