状态数组(不是对象)和散布运算符

时间:2019-04-11 09:22:07

标签: reactjs

我正在使用新的键值更新“组件”的反应状态数组中的子数组。

this.setState({
    components: {
       ...this.state.components,
       [this.state.key]: {
          ...this.state.components[this.state.key],
          [key]: v
      }
    }
});

这有效,但是它将this.state.components从数组更改为我不需要的对象。

我可以做到

var result = Object.keys(this.state.components).map(function (k) {
   return { [k]: this.state.components[k] };
});

this.setState({components: result});

修复数据,但是两次设置状态似乎很混乱且效率低下。有没有更好的办法?我尝试了使用[]而不是{}的各种形式,但是据我对散布运算符的理解,这应该可以工作。

1 个答案:

答案 0 :(得分:1)

您可以在当前处于状态的map数组上使用components并按状态返回key与组件索引不匹配的对象,或者更改{ {1}}属性(如果它们确实匹配)。

[key]