我知道如何做到这一点,但尝试这种方式并不确定为什么它不起作用?
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/