【发布时间】:2021-07-13 10:27:54
【问题描述】:
我编写了一个 ReactJS 网络应用程序。这是一个单页应用程序 (SPA)。 我有一个包含几个页面的菜单。每个页面都是一个 .js 文件。 由于 SPA,当我在菜单中更改页面时,我的浏览器不会刷新整页。
这是我在每一页上放的内容:
const myPageLoad = useCallback(async () => {
// loading data
}, []);
useEffect(() => {
myPageLoad();
}, [myPageLoad]);
“加载数据”可能需要 3-4 秒才能加载数据。 它工作正常。
如果我决定在“加载数据”完成之前从我的菜单中更改页面,我会在 javascript 控制台中收到此警告:
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. in Data (created by Context.Consumer)
如果我检测到页面更改,我想我必须取消我的加载特性。但是我该怎么做呢?
非常感谢
【问题讨论】:
-
因为在
myPageLoad函数内部你正在更新组件的状态。
标签: reactjs react-native use-effect usecallback