首页 > 解决方案 > 如何清理 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卸载字体仍在加载时。我应该如何处理?任何想法,将不胜感激。

标签: react-nativeexpo

解决方案


推荐阅读