【发布时间】:2020-06-25 19:16:03
【问题描述】:
在下面的代码中,我将 setCards 放在 setTimeout 中,但 1 秒后,只有当我传入状态副本时,渲染才会正确:[...cardStates] 而不是 cardStates 本身。如果我不这样做,setCards 将按照 hideCards() 更改状态之前的状态呈现 cardStates。
我认为这与 setTimeout 将函数放入队列时的状态有关,但我不完全掌握正在发生的事情。我已经挖掘了很多,并且出现了诸如过时的关闭之类的事情,但我不确定这是否是正确的方向。有人可以帮我解决这个问题吗?谢谢。
useEffect(() => {
if (numberShowing(cardStates) === 2) {
setTimeout(() => {
setCards(hideCards([...cardStates]));
}, 1000)
}
})
function hideCards(cards) {
let showing = cards.filter(card => {
return card.cardState === 'showing';
})
showing.forEach(card => {
card.cardState = 'hiding';
});
return cards;
}
【问题讨论】:
标签: javascript reactjs settimeout render setstate