React-Navigation + React-Redux: как подключить глобальный контейнер для навигатора - PullRequest
1 голос
/ 27 мая 2019

Я создаю приложение React-Native + Redux + React-Navigation, в котором потоки аутентификации определены между SwitchNavigator:

const UnauthStack = createStackNavigator({
  SignIn: SignInScreen, SignUp: SignUpScreen
}, { initialRouteName: 'SignIn' })

const AuthStack = createBottomTabNavigator({
  Home: HomeScreen, Profile: ProfileScreen
}, { initialRouteName: 'Home' }) 

export default createAppContainer(createSwitchNavigator({
  AuthLoading: AuthLoadingScreen,
  Unauth: UnauthStack,
  Auth: AuthStack
}, { initialRouteName: 'AuthLoading' }))

Он просто отображает экран загрузки авторизации при поиске токена доступа: если пользователь сохранил его, перейдите к стеку Auth, иначе перейдите к стеку Unauth.

Пользователь использует сохраненный токен (носитель) для отправки авторизованных запросов к API внутри стека Auth, и в какой-то момент этот токен больше не будет действительным. В этот момент я хочу заставить пользователя войти в систему.

Последний статус ответа отслеживается в моем редуксе store :

{
  lastResponseStatus: 200,
  oauth: { ... },
  entities: { ... },
}

Вопрос:

Как программно перемещаться по пользователю для SignInScreen (стек Unauth), когда lastResponseStatus получает 401?

Я думал о чем-то вроде глобального контейнера, подключенного к Auth-навигатору, который отображал бы состояние на реквизиты перед любым другим экраном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...