【发布时间】:2021-08-25 15:57:34
【问题描述】:
我正在尝试使用按钮开始自动拉卡,并在 croupierCount 达到 17 时停止它,使用 setInterval。 croupierCount 的值在下面使用此函数更改(<div> 显示此计数),但是当我试图在函数内达到此值以停止间隔时,它的记录值为 0。你能帮我解决这个问题吗?
const TheGame = () => {
const [croupierCount, setCroupierCount] = useState(0);
const [croupierHand, setCroupierHand] = useState([]);
const onStandHandler = () => { // triggered with button
const croupierInterval = async () => {
let card = await fetchCard(deck); // fetching new card with every iteration (works)
croupierHand.push(card); // pushes fetched card (works)
if (card[0].value === 'ACE') {
setCroupierCount((prevCount) => prevCount + 11);
}
else if (card[0].value === 'JACK' || card[0].value === 'QUEEN' || card[0].value === 'KING') {
setCroupierCount((prevCount) => prevCount + 10);
}
else {
setCroupierCount((prevCount) => prevCount + Number(card[0].value));
};
// croupierCount is changing (I'm displaying it in div)
console.log(croupierCount); // croupierCount = 0, I don't know why.
if(croupierCount > 17) {
clearInterval(startInterval);
};
}
const startInterval = setInterval(croupierInterval, 1000);
};
};
【问题讨论】:
-
您正在使用
croupierCount,就好像它是一个全局变量一样。是吗?缺少调试问题的关键代码。赋予croupierCount其价值的代码在哪里? -
抱歉,我剪错了片段。现在它已编辑@KIKOSoftware。
-
什么会触发 onStandHandler?
-
@raina77ow - 按钮
-
不应该是
setCroupierCount(croupierCount + 11);吗? reactjs.org/docs/hooks-state.html
标签: javascript reactjs async-await setinterval