Условный навигационный контейнер , onReady не запускается после аутентификации

#react-native #react-navigation #react-navigation-v5

Вопрос:

Я хочу иметь поток аутентификации для моего собственного приложения react, в котором мне нужно инициализировать некоторые вещи, когда пользователь аутентифицирован и контейнер готов. Но приведенное ниже условие не вызывает onReady срабатывания при изменении состояния isAuthenticated с false на true .

Поэтому, когда контейнер готов в состоянии без проверки подлинности, когда пользователь входит в систему и состояние меняется, NavigationContainer он не запускает onReady повторное

 const navContainerRef = React.useRef<NavigationContainerRef>(null);

 // the component returns
 isAuthenticated ? (
    <NavigationContainer ref={navContainerRef} onReady={() => console.log('onReady called',isAuthenticated)}>
     <ProtectedStack />
    </NavigationContainer>
  ) : (
    <NavigationContainer onReady={() => console.log('onReady called',isAuthenticated)}>
      <UnProtectedStack />
    </NavigationContainer>
  );
 

Я должен упомянуть, что экраны отображаются правильно, и после аутентификации логин (и незащищенные экраны) удаляются, а физическая кнопка «Назад» не переходит к ним.

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

1. Вы писали NavigationContainer 2 раза — но это не значит, что это 2 разные вещи. Вы визуализируете один и тот же компонент, он уже визуализирован и уже onReady был запущен.