React Native 中的条件渲染卸载组件太快导致内存泄漏

问题描述

我构建了一个登录系统来检查是否有令牌。如果没有,则呈现 LoginPage 组件,否则呈现应用本身。

    {
     state.token ?
     return (<LoginPage />)
     :
     return (<App />
    }

字体加载的逻辑直接来自 Expo 的文档:https://docs.expo.io/guides/using-custom-fonts/

我正在使用 useFonts 钩子。

问题是,如果用户登录,他们会在 useFonts 钩子更新状态之前重定向到主应用程序,但无论如何 LoginPage 组件都会呈现几分之一秒,因此它会尝试在之后修改状态组件已卸载。这会引发典型的“无法更新已卸载组件中的状态。这是一个空操作,但它表明存在内存泄漏......”

我已通过在我制作的自定义钩子中使用 Font.loadAsync 函数并在使用字体更新状态之前检查 LoginPage 组件是否已安装来解决此问题。

但是,我想知道我的问题是否有解决方涉及原始 useFonts 钩子。

如果行为不是在钩子本身中烘焙的,那么有没有办法让钩子仅在加载组件时修改状态?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)