Я использую Expo и реагирую на встроенную навигацию 5 в моем приложении. Проблема, с которой я столкнулся, заключается в том, что при первом рендеринге в режиме разработки значки вкладок отображаются медленно, я имею в виду, они появляются после небольшой задержки. Это ошибка? Кто-нибудь испытал это? Будет ли это исчезнуть в производственном режиме?
В приложении. js У меня есть условный рендер (экран spla sh или навигатор), но я полагаю, это не проблема. Почему это могло быть? Это просто условный рендеринг.
Условный рендеринг в приложении. js:
render() {
const { isLoading, missingPermissions } = this.state;
/*
The main content of tha app will be rendered only when:
1) All custom fonts are loaded
2) The user auth state is checked
Pd: All these actions are handled by the Splash screen
*/
return (
<SafeAreaView
style={styles.container}
forceInset={{ top: "never", bottom: "never" }}
>
<StatusBarPlaceholder />
{!isLoading ? (
<AppContent missingPermissions={missingPermissions} />
) : (
<SplashScreen handleIsLoading={this.handleIsLoading} />
)}
</SafeAreaView>
);
}
}
Pd: handleIsLoading просто устанавливает для App. js isLoading состояние false и вызывается в SplashScreen после загрузки всех шрифтов.
Одно решение, которое я нашел, - это сделать:
render() {
const { isLoading, missingPermissions } = this.state;
/*
The main content of tha app will be rendered only when:
1) All custom fonts are loaded
2) The user auth state is checked
Pd: All these actions are handled by the Splash screen
*/
return (
<SafeAreaView
style={styles.container}
forceInset={{ top: "never", bottom: "never" }}
>
<StatusBarPlaceholder />
{!isLoading && <AppContent missingPermissions={missingPermissions} />}
<SplashScreen handleIsLoading={this.handleIsLoading} />
</SafeAreaView>
);
}
}
Но не совсем то, что я хочу.
THE КОД AppContent:
function AppContent({ missingPermissions }) {
if (missingPermissions.length)
return <PermissionsController permission={missingPermissions[0]} />;
return (
<View style={styles.appContainer}>
<NavigationContainer>
<RootNavigator />
</NavigationContainer>
</View>
);
}