Expo React Native-在渲染应用程序之前获取所有数据

时间:2020-05-26 13:59:19

标签: javascript react-native

我希望我的应用在使用expo的AppLoading组件渲染实际应用之前,先从Firebase数据库中获取所有数据。我将应用程序包装在提供程序中并调用fetchCoreData(),但是,即使上下文状态尚未完成,该应用程序仍在加载。

我想知道是否有一种方法可以在渲染应用程序之前将其完全加载。

谢谢。

 const App = () => {
  const [isReady, setIsReady] = React.useState(false);
  const { fetchCoreData } = React.useContext(CoreDataContext);

  const _cacheResourceAsync = async () => {
    await Font.loadAsync({
      Roboto: require('native-base/Fonts/Roboto.ttf'),
      Roboto_medium: require('native-base/Fonts/Roboto_medium.ttf'),
      ...Ionicons.font,
    });
    fetchCoreData();
  };

  if (!isReady) {
    return (
      <AppLoading
        startAsync={_cacheResourceAsync}
        onFinish={() => setIsReady(true)}
        onError={console.warn}
      />
    );
  }

  return <Index />;
};

export default () => {
  return (
    <CoreDataProvider>
      <App />
    </CoreDataProvider>
  );
};

0 个答案:

没有答案