【发布时间】:2021-02-04 09:55:07
【问题描述】:
我有钩子 useInterval,它每 10 秒自动下载一次数据,但是我也有可以在每一刻手动下载数据的按钮。单击按钮时,我正在努力重新启动间隔计时器。所以基本上如果间隔计数到 5,但我同时点击按钮,间隔应该重新开始并在下载数据之前再次开始计数到 10
const useInterval = (callback, delay) => {
const savedCallback = useRef(callback);
useEffect(() => {
savedCallback.current = callback;
}, [callback]);
useEffect(() => {
const tick = () => {
savedCallback.current();
}
if (delay !== null) {
const id = setInterval(tick, delay);
return () => clearInterval(id);
}
}, [delay]);
};
export default useInterval;
应用部分:
useInterval(() => {
getMessage();
}, 10000)
const getMessage = async () => {
setProcessing(true)
try {
const res = await fetch('url')
const response = await res.json();
setRecievedData(response)
}
catch (e) {
console.log(e)
}
finally {
setProcessing(false)
}
}
const getMessageManually = () => {
getMessage()
RESTART INTERVAL
}
【问题讨论】:
标签: reactjs react-hooks