我想在这里发生的事情是在每个50ms
显示一个随机数,然后在5秒后停止,创建一个动画随机数的效果。然后将最后生成的随机数与用户输入的数进行比较。如果生成的最后一个随机数等于用户的输入,那么它将执行类似于console.log的操作
这里的问题是,即使最后生成的随机数等于用户的输入,代码也不会执行某些操作。
在reactjs中生成随机数动画并将随机数与输入数进行比较的最佳方法是什么?(就像使用if语句比较随机数是否等于输入数一样)
const [randomNumber, setRandomNumber] = useState(0);
const [toggle, setToggle] = useState(false);
const [inputNum, setInputNum] = useState(0);
useEffect(() => {
let counter;
if (toggle) {
counter = setInterval(
() => setRandomNumber(Math.floor(Math.random() * 10)),
50
);
}
return () => {
clearInterval(counter);
};
}, [toggle]);
const handleGenerateNumber = () => {
setToggle(true);
setTimeout(() => {
setToggle(false);
}, 5000);
if (inputNum === randomNumber) {
console.log(randomNumber, "you won");
}
};
发布于 2021-09-17 07:01:31
你在if statement
中弄错了。它必须在setTimeout
块中。演示:https://codesandbox.io/s/dreamy-booth-ddtni
https://stackoverflow.com/questions/69225378
复制相似问题