#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
был запущен.