Сбросить навигацию без избыточности - PullRequest
0 голосов
/ 10 сентября 2018

В настоящее время, насколько я знаю, reset в react-navigation выполняется путем отправки действия приращения NavigationActions.reset();

В журнале консоли this.props.navigation отображается функция сброса, но если я пытаюсь использоватьэто как this.props.navigation.reset('Home'), оно выдает мне ошибку newStackActions.map не является функцией.

Можем ли мы сбросить всю навигацию без использования приставки?Должна быть такая функциональность, наверное, я не могу ее найти: /

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вы можете использовать StackActions для сброса определенного стека и отправки его с помощью навигационного внутреннего диспетчера

import { StackActions, NavigationActions } from 'react-navigation';

const resetAction = StackActions.reset({
  index: 0,
  actions: [NavigationActions.navigate({ routeName: 'Profile' })],
});
this.props.navigation.dispatch(resetAction);
0 голосов
/ 10 сентября 2018

Так что, видимо, после опробования некоторых методов. replace, кажется, работает просто отлично.

this.props.navigation.replace(ScreenName) заменяет текущий экран на указанный экран без какого-либо приращения к стеку экранов, по сути, вы просто переключаете экраны.

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

EDIT

Примечание. В случае путаницы replace не имитирует поведение функции reset.

replace просто заменяет ваш текущий активный экран или самый верхний экран в стеке на данный экран, тогда как

reset по сути стирает всю историю навигации и создает новый объект навигации на основе предоставленных вами ссылок на экраны. Другими словами, вы можете создать навигационный стек, полный экранов, которые вы никогда не посещали. (не уверен, как это возможно;))

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