gpt4 book ai didi

javascript - react setTimeout - 内存泄漏

转载 作者:行者123 更新时间:2023-12-04 02:30:48 28 4
gpt4 key购买 nike

我有以下组件,我在其中显示消息 5 秒,然后将其从主页中删除。
当我在页面之间切换时,有时会出现以下错误。任何建议请

    index.js:1 Warning: Can't perform a React state update on an unmounted component. 
This is a no-op, but it indicates a memory leak in your application.
To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
代码:
 const Home = props => {

const [visible, setVisible] = useState(true);

useEffect(() => {
setTimeout(() => setVisible(false), 5000);
}, []);

return (
<div >
{visible && <Message showDefault={false} /> }
<BaseView />

</div>

);
};

最佳答案

好吧,这个错误其实是不言自明的:由 setTimeout 触发的状态改变函数在组件卸载后调用。但它是变相的无操作:组件不再呈现,为什么有人会对它的内部状态变化感兴趣?
幸运的是,React 提供了 a documented way清理那些和类似的异步状态更改器 - 通过使用 useEffect 返回的函数打回来。像这样:

useEffect(() => {
const timeoutId = setTimeout(() => setVisible(false), 5000);
return function cleanup() {
clearTimeout(timeoutId);
}
}, []);
请注意,该函数不必命名(但它简化了阅读)。

关于javascript - react setTimeout - 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64293864/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com