У меня довольно сложная многоуровневая навигационная структура, которую я пытаюсь прыгать между экранами / детьми. Я хочу, чтобы пользователь мог возвращать пользователя на экран входа в систему всякий раз, когда вызов API возвращает сообщение о том, что информация о сеансе пользователя больше не действительна, или возвращать его на домашний экран после завершения платежа.
У меня есть статический класс, в котором я пытался установить навигацию, а затем вызвать навигацию, но проблема в том, что он не работает для навигации к детям.
Вот моя структура навигации:
appNavigation: SwitchNavigator{
LoginFlow: BottomTabNavigator{
CallUs: Screen,
Login: Screen,
LocationsInsecure: StackNavigator{
// Location Screens
}
MoreInfoInsecure: Screen
}
MainFlow: BottomTabNavigator{
Home: Screen,
Order: StackNavigator{
// Order Screens
},
Payment: StackNavigator{
// Payment Screens
},
Messages: Screen,
MoreInfo: Screen,
Locations: StackNavigator{
// Location Screens
}
}
}
Я установил, используя:
// App.ts
/*
* More code above configuring LoginFlow and MainFlow as outlined
*/
export default createSwitchNavigator(
{
'LoginFlow': props => {
Context.SetNavigation(props.navigation)
return <LoginFlow />
},
'MainFlow': MainFlow
},
{ initialRouteName: 'LoginFlow' }
)
Я хотел бы иметь возможность позвонить Context.GetNavigation().navigate('Home')
, который не работает.
Я также пробовал:
Context.GetNavigation().dispatch(
NavigationActions.navigate({
routeName: 'MainFlow',
action: NavigationActions.navigate({
routeName: 'Home'
})
})
)
Стоит отметить пару вещей:
- Я могу вызвать
Context.GetNavigation().navigate()
на TabNavigator, в котором пользователь не работает должным образом.
- Я могу позвонить
this.props.navigation.navigate('PaymentSubscreen')
из дома
- Я могу позвонить
this.props.navigation.navigate('Home')
из стека платежей
Похоже, что существует жесткий барьер между экранами на SwitchNavigator. Это ожидаемое поведение? Стоит ли вместо этого просто хранить навигацию LoginFlow отдельно и вызывать ее только для истекшего сеанса и использовать навигатор свойств экрана для управления перемещением внутри MainFlow?