【发布时间】:2021-02-26 07:25:41
【问题描述】:
我想做一个计时器。 我的代码是
export default function Test() {
const [count, setCount] = useState(0)
function CountUp() {
setCount(count + 1);
}
useInterval(() => {
CountUp();
}, 1000, count)
return (
<div>
{count}
</div>
)
}
这里是useInterval
function useInterval(callback, delay) {
const ref = useRef()
useEffect(() => {
ref.current = callback;
})
useEffect(() => {
const timerId = setInterval(ref.current, delay);
return () => {
clearInterval(timerId);
}
}, [delay])
}
const timerId = setInterval(()=>{ ref.current() }, delay);
这些代码不起作用。 count 只增加了一次。
但如果我将代码const timerId = setInterval(ref.current, delay); 更改为const timerId = setInterval(() => { ref.current() }, delay);。
有效! 我不明白为什么我写的代码是错误的。 你能告诉我为什么吗?
【问题讨论】:
-
为什么你认为这是错误的?当您调试时,它是如何失败的?它与您的“正确代码”有何不同?请提供有关问题的详细信息。
标签: javascript reactjs react-hooks