【问题标题】: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);
    }, []);
    

    【讨论】:

      猜你喜欢
      • 2021-06-02
      • 2021-10-10
      • 2018-05-08
      • 1970-01-01
      • 2019-07-25
      • 2021-07-19
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      相关资源
      最近更新 更多