如何使用prevState更新反应中的数组?

时间:2018-04-29 07:00:47

标签: reactjs

如何使用prevState更新反应数组?

我想在数组中插入一条记录。

我发现了一条不应用于推动州保全措施的信息。

this.state = {
            dados : {
                doc: '',
                infe: '',
                bene: '',
                inco: [],
                cino: [],
            }
        }

this.setState(prevState => ({ dados:{
                inco: [...prevState.dados.inco, URL.createObjectURL(result)]
            }}))

this.setState(prevState => ({ dados:{
                cino: [...prevState.dados.cino, URL.createObjectURL(result)]
            }}))

2 个答案:

答案 0 :(得分:1)

尝试将setstate()函数调用绑定到一个,因为dados状态键可能会丢失其他属性,因此它无法在第二个setstate()中找到cino对象。 这里,dados状态对象在第一个setState()函数cal l之后只得到inco属性,因此现在在代码下面我们确保维护状态对象的一致性

以下是示例代码

 this.state = {
            dados : {
                doc: '',
                infe: '',
                bene: '',
                inco: [],
                cino: [],
            }
        }

this.setState(prevState => (
                 { 
                    dados:{
                            ...prevState.dados,
                            inco: [...prevState.dados.inco,
                                    URL.createObjectURL(result)
                                  ],
                            cino: [...prevState.dados.cino,
                                    URL.createObjectURL(result)
                                  ]
            }}))

答案 1 :(得分:0)

 var exp = Object.assign([],data.questions);

   exp[index] = {
                 name:name,
                 question:question,
                 [event.target.name]:event.target.value
  }
   setData({
              ...data,
              questions:exp
   })