反应变化状态

时间:2019-03-23 09:09:56

标签: reactjs

我有一个处于状态的数组,并且想要根据索引来更改数组,这是我使用的方法

dynamicFieldsOnChange(e, index) {
    this.setState({[product_colors[index]]: e.target.value});
};

但是它为什么没有任何作用?

2 个答案:

答案 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]
      }
      });
  };