Очистить стек и перенаправить на вход при щелчке выхода из дочернего стека - PullRequest
0 голосов
/ 30 апреля 2018

Я хочу очистить все компоненты экрана и перенаправить его на экран входа в систему. Вариант использования:

Login -> 
MainScreen -> 
chose OrderModule from side menu ->
OrderScreen1->
OrderScreen2 ->
OrderScreen3 -> 
chose StockModule from side menu -> 
pressed device back button ->
reached to dashboard -> 
now pressed logout (internally uses `this.props.navigation.goBack(null)`) ->
I see OrderScreen2 instead of Login screen

Моя иерархия:

PrimaryNav (StackNavigator)
--Login
--MainScreen
--ResetPassword

MainScreen (StackNavigator)
--DrawerStack- DrawerScreen

DrawerScreen (DrawerNavigator)
--Dashboard
--OrderModule
--StockModule
--SalesModule

OrderModule (StackNavigator)
--OrderScreen1
--OrderScreen2
--OrderScreen3

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Это работает для меня

this.props.navigation.reset([NavigationActions.navigate({ routeName: 'Login' })], 0)

ссылка https://reactnavigation.org/docs/en/navigation-prop.html

0 голосов
/ 30 апреля 2018

Я нашел решение для вышеуказанной ситуации. Я публикую его, потому что нашел его методом «попробуйте» и очень полезен в большинстве сценариев для других.

Используйте метод `popToTop`

this.props.navigation.popToTop();

используйте строку выше, когда модуль щелкает из выдвижного ящика (боковой панели). Он очищает старый стек модулей, затем записывает строку для перехода к новому экрану или навигатору. В моем случае: this.props.navigation.navigate('StockModule');

...