【问题标题】:using setState to getState in setInterval在 setInterval 中使用 setState 获取 getState
【发布时间】:2022-12-07 08:25:18
【问题描述】:
我在 setInterval 中使用它,感觉非常不合法 xD
const [nonce, setNonce] = useState(0);
useEffect(() => {
window.setInterval(() => {
let nonce = 0;
setNonce((prevNonce) => (nonce = prevNonce));
console.log('nonce has the correct value even if got changed:', nonce);
}, 10);
}, []);
这是我不应该使用的东西吗?
【问题讨论】:
标签:
reactjs
react-hooks
setinterval
【解决方案1】:
它没有任何问题,但需要清理它以避免被重新渲染。
您必须存储变量并在 useEffect 钩子返回时取消设置。
换句话说,如果您不这样做,每次您在应用程序中“更改页面”时,都会创建一个额外的间隔。
这是您清除间隔的方式:
const [nonce, setNonce] = useState(0);
useEffect(() => {
const myInterval = setInterval(() => {
let nonce = 0;
setNonce((prevNonce) => (nonce = prevNonce));
console.log('nonce has the correct value even if got changed:', nonce);
}, 10);
return () => clearInterval(myInterval);
}, []);