0

这是主要的应用程序(Expo sdk36 with react-navigation 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>
    );
  }

它从登录开始,我登录,然后转到主页,我选择个人资料按钮,它会无限期地刷新个人资料屏幕。我可以单击注销按钮,然后它会进入登录屏幕(这里再次闪烁几下)。stateNavigation 和 state 的完整日志在这里:https ://gist.github.com/lc3t35/d32d5ef6d042fec4c1344fbe9769b06b

欢迎任何想法。

4

1 回答 1

0

<Provider>和之间<AuthContext.provider>,我也有<ReduxNetworkProvider>react-native-offline。它似乎触发了 NavigationContainer 道具......我删除了它并且应用程序表现更好(尽管一些可疑的刷新仍然活跃......)更多地挖掘这个......

于 2020-02-24T18:49:24.630 回答