Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.1k views
in Technique[技术] by (71.8m points)

mobx - RootNavigator rendering twice in react native 0.63.3

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!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...