反应:将项目推入状态数组

时间:2018-06-24 06:33:55

标签: javascript reactjs

试图避免重复的问题,但我认为这与我之前搜索的问题有所不同。
我的状态为“收藏夹”,其中包含一系列商品。我想在以下函数中向数组添加一个项目。我正在创建一个具有收藏夹值的变量,然后将新值推入数组的该变量并将收藏夹状态设置为新变量。

这对我有用,但我正在尝试查看这是否是不合适的方法。

  handleAddFavorite(item) {
    let favorites = this.state.favorites;
    favorites.push(item);

    this.setState({
      favorites: favorites
    });
  }

3 个答案:

答案 0 :(得分:0)

要将项目推入状态数组,可以使用ES6 spread syntax,如下所示:

this.setState({
  favorites: [...this.state.favorites, item]
});

答案 1 :(得分:0)

您正在引用该数组,而不是创建一个新数组。

创建新数组的一种方法是使用ES2015 array spread

 handleAddFavorite(item) {
    const {favorites} = this.state;

    this.setState({
      favorites: [...favorites, item]
    });
  }

答案 2 :(得分:0)

在这里您不能将对象推入这样的状态数组。您可以按自己的方式在常规数组中进行推送。在这里,您必须设置状态,

this.setState({ 
     favorites: [...this.state.favorites, item] 
})