Rea c -навигатор 5 с AuthContext и 2 Stack Navigator: l oop и fla sh экраны - PullRequest
0 голосов
/ 21 февраля 2020

Вот основное приложение (Expo SDK36 с реакцией навигации 5):

<Provider store={store}>
   <AuthContext.Provider value={authContext}>
      <NavigationContainer
        onStateChange={(stateNavigation) => console.log('New stateNavigation is', stateNavigation, state)}
      >
        <SafeAreaProvider>
          <Stack.Navigator screenOptions={{ headerShown: false }}>
            {state.isLoading ? (
              <Stack.Screen name="Loading" component={AppLoadingScreen} />
            ) : state.profile === null ? (
              // No status, user isn't signed in
              <Stack.Screen name="SignInScreen" component={SignInScreen} />
            ) : (
              // User is signed in
              <Stack.Screen name="HomeScreen" component={HomeScreen} />
            )}
          </Stack.Navigator>
        </SafeAreaProvider>
      </NavigationContainer>
    </AuthContext.Provider>
</Provider>

SignInScreen и HomeScreen являются ScreenNavigator:

function SignInScreen() {
    const { signIn } = React.useContext(AuthContext);
    return (
      <Stack.Navigator screenOptions={{ headerShown: false }}>
        <Stack.Screen name="SignIn">
          {(props) => <SignIn {...props} signIn={signIn} />}
        </Stack.Screen>
      </Stack.Navigator>
    );
  }

  function HomeScreen() {
    const { signOut } = React.useContext(AuthContext);
    return (
      <Stack.Navigator screenOptions={{ headerShown: false }}>
        <Stack.Screen name="Home">{(props) => <Home {...props} />}</Stack.Screen>
        <Stack.Screen name="Profile">
          {(props) => <Profile {...props} signOut={() => signOut()} />}
        </Stack.Screen>
      </Stack.Navigator>
    );
  }

Он начинается с входа, я вхожу , это идет домой, я выбираю кнопку профиля, и он обновляет экран профиля до бесконечности. Я могу нажать на кнопку SignOut, и она переходит к экрану входа (здесь снова несколько раз). Полный журнал stateNavigation и state находится здесь: https://gist.github.com/lc3t35/d32d5ef6d042fec4c1344fbe9769b06b

Любая идея приветствуется.

1 Ответ

0 голосов
/ 24 февраля 2020

Между <Provider> и <AuthContext.provider>, у меня также есть <ReduxNetworkProvider> от react-native-offline. Кажется, он запускает реквизиты NavigationContainer .... Я удалил его, и приложение ведет себя лучше (несмотря на то, что некоторые подозреваемые refre sh все еще активны ...) Копаем больше в этом ....

...