简体   繁体   English

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

[英]How setState to nested array in react

If I have a state: 如果我有状态:

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

In handler function I can add new value like that? 在处理函数中,我可以像这样添加新值吗? It's correct? 这是正确的?

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

With this way I will get my state like that? 这样,我将获得这样的状态?

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

Another way of adding values to existing state array is, 将值添加到现有状态数组的另一种方法是,

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

You can also use push method... 您也可以使用push方法...

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM