Почему Navigation.goBack () не работает должным образом?

Я использую следующий способ создания системы навигации

StackNavigator -> DrawerNavigator -> (Экран A, Экран B, Экран C)

Экран A - начальный маршрут

Экран A - Экран B Использование

this.props.navigation.navigate("Screen B")  //Working Fine

Экран B на экран C Использование

this.props.navigation.navigate("Screen C")  //Working Fine

На экране C

this.props.navigation.goBack() //Not Working

Но

this.props.navigation.goBack(null) //It's going to Screen A instead of Screen B

Что здесь не так.

Пожалуйста, помогите мне Спасибо.




Ответы (2)


Поскольку вы не показали структуру навигации ящика, я не знаю, как в него помещаются 3 экрана. Я предполагаю, что это 3 разных ящика.

Это происходит потому, что вы используете DrawerNavigation, которая не создает историю экранов при навигации по нему.

Чтобы решить эту проблему, вам нужно изменить структуру навигации на что-то вроде:

DrawerNavigation => StackNavigator => Screen A, B, C
person Auticcat    schedule 27.07.2019
comment
Тогда как установить drawerLockMode: заблокировано-закрыто, если я помещаю экраны в StackNavigator? - person Sabish.M; 27.07.2019
comment
Ты только что спас мне жизнь :) - person Malay M; 20.08.2020

Как указано выше, навигаторы ящиков не находятся в стеке, поэтому вы не можете указать путь своего путешествия.

свойство key для goBack() - это динамически создаваемая строка, создаваемая react-navigation при переходе к новому маршруту.

Эти ключи стека хранятся в this.props.navigation.state

ПРИМЕЧАНИЕ. Используйте .goBack(null), если ваша цель - вернуться в любое место без указания конечной цели.

Как и в этом примере, вы можете добавить его в стек.

Пример

const Drawers = createDrawerNavigator(
  {
    A: {
      screen: HomeScreen
    },
   ...
  },
  {
    initialRouteName: "A"
  }
);

const RootStack = createStackNavigator(
  {
    Drawers: {
      screen: Drawers
    },
    otherStack: {
      screen: otherStack
    },
    ....

person hong developer    schedule 27.07.2019