У меня есть код, который выглядит следующим образом:
function RootNavigator() {
const [isLoggedIn, setIsLoggedIn] = useState(false)
isUserLoggedIn().then((someBoolean) => {
setIsLoggedIn(someBoolean)
})
console.log("LOGEED IN STSTE:", isLoggedIn)
return (
<Stack.Navigator screenOptions={{ headerShown: false }}>
{isLoggedIn || <Stack.Screen name="Root" component={WelcomeScreen} />}
{isLoggedIn && <Stack.Screen name="InvestorProfileQuiz" component={InvestorProfileQuizScreen} />}
{isLoggedIn || <Stack.Screen name="AppTour" component={AppTourScreen} />}
{isLoggedIn || <Stack.Screen name="Login" component={LoginScreen} />}
{isLoggedIn || <Stack.Screen name="NotFound" component={NotFoundScreen} options={{ title: 'Oops!' }} />}
</Stack.Navigator>
);
}
Итак, проблема в том, что при рендеринге часть состояния isLoggedIn
ложна, а затем рендерится первая страница WelcomeScreen
. Экран мерцает, затем isLoggedIn
изменяется на true, а затем InvestorProfileQuiz
отображается правильно. Как убедиться, что метод async / await isUserLoggedIn()
разрешается перед рендерингом дочерних элементов StackNavigtor?