在反应中,如何更新数组状态的特定属性?

时间:2018-08-16 22:39:22

标签: javascript reactjs state

我有一个state这样的数组:

constructor(props){
   super(props)
   this.state={
      test_steps: []
   }
}

,它具有以下属性:

test_steps: [
    {
        description: "Test desc"
        expected_results: "Test exp. results"
        other_info: "test other info"
        status: true
        step_number: "1"
        _id: {$oid: "1234565894"}
    }
]

如果我只想在此状态下更新**other_info**属性,我将如何实现?

2 个答案:

答案 0 :(得分:1)

由于数组中只有一个元素,因此可以使用扩展语法,然后更改相关属性。

this.setState(prevState => ({
      test_steps: [
        {
          ...prevState.test_steps[0],
          other_info: "foo"
        }
      ]
}));

答案 1 :(得分:1)

您首先需要获取状态并将其存储在变量中。然后循环值并修改它。之后,只需设置状态即可。

let test_steps = this.state.test_steps;
    test_steps.map((test)=>{
    test.other_info = "YOUR_UPDATED_INFO";
    return test;
    });

this.setState({test_steps});