我在组件中有一个方法。我想用嵌套对象数组中的键动态设置状态。

method = (name, value) => {
    console.log(name)
    //a  //value is 1
    //b  //value is 2
    //c  //value is 3
    this.setState({ [name]:value })
}


不嵌套时,它会成功地动态更改状态。但是当它嵌套时

 method = (name, value) => {
    this.setState({
        ArrayOfObjects:[{
            [name] : value
    }]
 }


我的状态变成

state = {
    ArrayOfObjects: [{
       c: 3
    }]
}


我想要

state = {
    ArrayOfObjects: [{
        a: 1,
        b: 2,
        c: 3
    }]


怎么了?

最佳答案

您可以将元素推到当前的ArrayOfObjects。

ArrayOfObjects = this.state.ArrayOfObjects;
ArrayOfObjects.push({[name] : value});
this.setState({
    ArrayOfObjects
});


或使用传播运算符:

this.setState({
    ArrayOfObjects: [
        ...this.state.ArrayOfObjects,
        {[name] : value}
    ]
});

关于javascript - 具有键嵌套状态的动态setState(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53092249/

10-10 21:21