setState如何在嵌套数组中做出反应

时间:2019-08-14 10:43:27

标签: javascript reactjs

如果我有状态:

this.state = {
    data: [
      {
         match: false,
         value: "Some"
      }
    ],
};

在处理程序函数中,我可以添加新值吗?这是正确的?

  inputKeydown = (e) => {
    const val = e.target.value;
    if (e.key === 'Enter' && val) {
      this.setState({ data: [...this.state.data, {match: false, value:val}]});
    } 
  }

通过这种方式,我将得到这样的状态?

this.state = {
   data: [
     {
        match: false,
        value: "Some"
     },
     {
        match: false,
        value: "input value"
     },
   ],
};

2 个答案:

答案 0 :(得分:0)

将值添加到现有状态数组的另一种方法是

this.setState(prevState => ({
    ...prevState,
    data: prevState.data.concat({match: false, value:val})
  }),()=>console.log(this.state.data)
)

答案 1 :(得分:0)

您还可以使用push方法...

{
  let dataArray = this.state.data;
  dataArray.push({match: false,value: e.target.value});
  this.setState ({
    data:data array
  });
}