React Native — как получить начальное состояние навигации в React Navigation

#javascript #reactjs #react-native #react-navigation

#javascript #reactjs #react-native #react-навигация

Вопрос:

Я пытаюсь получить начальное состояние в том же формате, который onStateChange prop предоставляет в NavigationContainer. onStateChange не запускается при первоначальном рендеринге. В приведенном ниже примере мне удалось получить состояние при навигации между экранами, но не на первом. Есть идеи?

 export default function App() {
  const [pageState, setPageState] = React.useState();

  return (
    <NavigationContainer onStateChange={(state) => setPageState(state)}>
      <RootNavigation />
    </NavigationContainer>
  );
}

 

Ответ №1:

Попробуйте использовать метод onReady из NavigationContainer из документации: https://reactnavigation.org/docs/navigation-container#onready

Комментарии:

1. Метод onReady не получает состояние, как я могу его использовать

2. Объедините его с методом getRootState. Вам просто нужно добавить ссылку на NavigatorContainer. Что — то вроде этого: const navigationRef = useRef() const handleGetInitialState = () => { navigationRef.current?.getRootState() } <NavigationContainer ref={navigationRef} onReady={handleGetInitialState}>...</NavigationContainer>