Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

This is the RootNavigator for our react native app. For some reason it renders twice, can anyone explain why. It sits inside top level App component wrapped in a mobx store provider.

Heres the offending function

function RootNavigator() {
  const { authStore } = useStores();
  console.log('STACK NAV')
  return (
    <NavigationContainer>
      <Stack.Navigator
        headerMode="none"
        screenOptions={{ cardStyle: { backgroundColor: 'white' } }}>
        {!authStore.authUser && (
          <Stack.Screen name="SignIn" component={SignInScreen} />
        )}
        {authStore.authUser && (
          <Stack.Screen name="Authenticated" component={AuthenticatedDrawer} />
        )}
      </Stack.Navigator>
    </NavigationContainer>
  );
}

This log gets logged twice when the app loads.

This is the parent store provider:

function StoreProvider({ children }: StoreProviderProps) {
  const [stores, setStores] = useState(createStores());
  const resetStores = useCallback(() => {
    setStores(createStores());
  }, []);
  return (
    <StoreContext.Provider value={{ ...stores, resetStores }}>
      {children}
    </StoreContext.Provider>
  );
}

This is the App component where the RootNavigator is wrapped in the store provider. When i put logs in above RootNavigator then only happen once.

const App = () => {
  useEffect(() => {
    SplashScreen.hide();
  }, []);
  return (
    <StoreProvider>
      <RootNavigator />
    </StoreProvider>
  );
};

I appreciate these are small chunks of code but they should describe the way the root navigator is wrapped in enough detail i hope.

Thanks for your help!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
3.6k views
Welcome To Ask or Share your Answers For Others

1 Answer

等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...