![](/img/trans.png)
[英]How to check if a number is greater than another number in some quantity in javaScript?
[英]How to check if a number is greater than another number inside useEffect
Js对我来说很难>:|
export default function Timer() {
const [timer, setTimer] = useState(10000);
useEffect(() => {
setInterval(() => {
if (Number(timer) > Number(6000)) {
setTimer((prevCount) => prevCount - 100);
}
}, 100);
}, []);
console.log(timer);
为什么这个计时器在达到 6000 时不停止倒计时?
你不需要setInterval
。 让useEffect
仅在计时器更改时运行,这是通过将timer
作为参数传递来完成的。
此链接描述了如何优化useEffect
const [timer, setTimer] = useState(10000);
function setTimerToNewValue() {
setTimer(timer - 100);
}
useEffect(() => {
if (timer > 6000) {
setTimerToNewValue();
}
}, [timer]);
console.log(timer);
在此示例中, useEffect
将在timer
更改后立即执行。
这是setInterval
的另一个实现
function setTimerToNewValue() {
setTimer((timer) => timer - 100);
}
useEffect(() => {
let z;
if (timer > 6000) {
z = setInterval(() => {
setTimerToNewValue();
}, 1000);
}
return () => clearInterval(z);
}, [timer]);
如果你必须使用定时器,你可以使用这个代码
export default function Timer() {
const [timer, setTimer] = useState(10000);
useEffect(() => {
console.log(timer)
const interval = setInterval(() => {
if (timer>6000)
setTimer(timer => timer - 1000);
}, 1000);
return () => clearInterval(interval);
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.