推入状态数组的正确方法

我似乎在将数据推入状态数组时遇到问题。我正在尝试以这种方式实现它:

this.setState({ myArray: this.state.myArray.push('new value') })

但是我相信这是不正确的方式,并导致可变性问题?

米亚Stafan2020/03/12 14:36:36

通过以下方式,我们可以检查和更新对象

this.setState(prevState => ({
    Chart: this.state.Chart.length !== 0 ? [...prevState.Chart,data[data.length - 1]] : data
}));
阿飞古一A2020/03/12 14:36:36

绝不建议直接更改状态。

在更高版本的React中,建议的方法是在修改状态以防止竞争情况时使用updater函数:

将字符串推到数组的末尾

this.setState(prevState => ({
  myArray: [...prevState.myArray, "new value"]
}))

将字符串推送到数组的开头

this.setState(prevState => ({
  myArray: ["new value", ...prevState.myArray]
}))

将对象推到数组的末尾

this.setState(prevState => ({
  myArray: [...prevState.myArray, {"name": "object"}]
}))

将对象推送到数组的开头

this.setState(prevState => ({
  myArray: [ {"name": "object"}, ...prevState.myArray]
}))