react-native - 如何清理 Expo useFonts 的订阅?
问题描述
我得到了Cannot perform a React state update on unmounted component
错误。我在 App.tsx 中有以下代码:
export const App = observer(() => {
// ↓↓↓ this snippet leads to "Cannot perform a React state update on unmounted component"
if (AppState.isLoading) {
// Checking for token is in process...
return <SplashScreen></SplashScreen>;
}
return (
...
);
});
问题是,SplashScreen
里面有另一个组件 - AppText
,这里是:
function AppText(props: IProps) {
const [fontLoaded] = useFonts({
AvenirHeavy: require('../assets/fonts/Avenir-Heavy.ttf'),
AvenirNext: require('../assets/fonts/AvenirNextCondensed-DemiBold.ttf'),
AvenirBlack: require('../assets/fonts/Avenir-Black.otf'),
AvenirMedium: require('../assets/fonts/Avenir-Medium.ttf'),
});
return (
...
);
}
如果我注释掉require
里面的所有 s useFonts
- 我不明白Cannot perform a React state update on unmounted component
。
注意:useFonts
是一个异步加载字体的 Expo 钩子。所以我想这就是我收到错误的原因 - 当SplashScreen
卸载字体仍在加载时。我应该如何处理?任何想法,将不胜感激。
解决方案
推荐阅读
- r - 在函数中使用 diff() 会产生错误而不执行
- proxy - 了解 CoAP 代理
- linux - 将一个文件的内容附加到另一个带有缩进的 yaml 文件
- angular - Angular 8:如何模拟配置类(仅在类中的常量和静态属性)
- javascript - PizzicatoJS 播放到指定设备(SinkId)
- c - mmap 与 mmap64 之间有什么区别吗?
- autodesk-forge - Autodesk Forge 可以吗?
- javascript - fireFox 不接受基本身份验证
- php - 在 Bootstrap 中对齐段落
- ios - Bing 地图 url 不下载图块并引发安全异常