首页 > 解决方案 > 如何在超时函数中获取更新的 useState() 值?

问题描述

我目前正在尝试将最新更新添加到超时功能中。这意味着我想c更新到1而不必使用像useRef钩子这样的东西。

const [c, s] = useState<number>(0)

    const f = () => {
        s(1)
        setTimeout(() => console.log(c), 600)
    }

    return (
        <div
            style={{ width: '100%', height: '100%', backgroundColor: 'black' }}
            onMouseEnter={f}
        >
            test
        </div>
    )

标签: javascriptreactjsasynchronousreact-hooks

解决方案


没有参考,你可以试试useEffect钩子:

const [c, setC] = useState<number>(0);

useEffect(() => {
  setTimeout(() => {
    console.log(c);
  }, 600);
}, [c]);

const f = () => {
  setC(1);
};

return <div onMouseEnter={f}>test</div>;

推荐阅读