更新嵌套数组中的数组而不会发生突变

时间:2018-10-16 01:58:43

标签: javascript reactjs ecmascript-6

下面的代码对我来说并不好,因为我必须声明一个临时变量,是否有任何较短的代码也可以达到相同的结果?

handleChange = (e, index1, innerIndex) => {
  const temp_values = this.state.values
    temp_values.map((value, index) => {
      if (index === innerIndex) {
        temp_values[index].args[index1] = e.target.value
      }
    })
    this.setState({
      values: temp_values
    })
}

1 个答案:

答案 0 :(得分:0)

是的,您可以像这样简化它:

handleChange = (e, index1, innerIndex) => {
  this.setState({
    values: this.state.values.map((value, index) => {
      const args = [].concat(value.args);
      if (index === innerIndex) {
        args[index1] = e.target.value;
      }

      return {
        ...value,
        args,
      };
    }),
  });
}