javascript - 删除处于 react 状态的数组的第一项

标签 javascript arrays reactjs

我知道如何做到这一点,但尝试这种方式并不确定为什么它不起作用?

  drawCard = () => {
    const deck = this.state.cards;
    deck.shift();
    console.log(deck, 'deck'); //this is correctly logging one less everytime
    this.setState({cards: deck})
  }

卡片只是一个对象

所以即使正在调用该函数并且控制台日志正在运行,为什么它不更新状态?

(console.log(state.cards.length) 总是返回 3)

最佳答案

不要使用改变状态的方法(例如,Array#shift)。您可以改为使用 Array#slice 返回数组一部分的浅拷贝:

drawCard = () => {
  this.setState({ cards: this.state.cards.slice(1) })
}

关于javascript - 删除处于 react 状态的数组的第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50161658/

相关文章:

javascript - 如何使链接充当文件输入

c# - 如何实现二维矩阵的Kadane算法

java - 将三维对象存储在一维数组中

使用 malloc 创建动态结构数组

javascript - 每次点击都会 react 进度条

reactjs - 在 react 中带有缓冲区的 Material ui slider

javascript - useEffect 和 'react-hooks/exhaustive-deps' linting

用于多个页面元素的 javascript Worker

滚动后的Javascript粘性div

javascript - 如何从 react 中的功能组件访问文件