React Navigation (версия 4.x): переход на тот же экран - PullRequest
0 голосов
/ 24 апреля 2020

Я использую createStackNavigator. У меня есть три экрана: A, B и C

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

B(1): первый раз, когда мы переходим на экран B с некоторыми параметрами

B(2): второй раз, когда мы переходим на экран B с различными параметры

Рассмотрим этот переход:

A --> B(1) --> C --> B(2)

Текущее поведение :

Когда я перехожу с экрана A до B(1), B(1) до C, каждый раз, когда появляется новый экран с анимацией от справа налево . Но когда я перехожу с C на B(2), появляется новый экран с слева направо . (выпуск 1)

Когда я на B(2) и использую navigation.goBack(), я вижу A (но я хочу видеть C конечно) (выпуск 2)

Ожидаемое поведение :

Когда я перехожу с C на B(2), новый экран должен отображаться с справа налево (Как и предыдущие переходы)

Когда я на B(2) и использую navigation.goBack(), я должен увидеть C

System:
    OS: macOS 10.15.3
    CPU: (4) x64 Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
    Memory: 246.99 MB / 8.00 GB
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 12.13.1 - ~/.nvm/versions/node/v12.13.1/bin/node
    npm: 6.12.1 - ~/.nvm/versions/node/v12.13.1/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  SDKs:
    iOS SDK:
      Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
    Android SDK:
      API Levels: 28, 29
      Build Tools: 28.0.3, 29.0.2
      System Images: android-28 | Google APIs Intel x86 Atom, android-29 | Google APIs Intel x86 Atom
  IDEs:
    Android Studio: 3.5 AI-191.8026.42.35.5977832
    Xcode: 11.3.1/11C504 - /usr/bin/xcodebuild
  npmPackages:
    react: 16.9.0 => 16.9.0
    react-native: https://github.com/expo/react-native/archive/sdk-36.0.1.tar.gz => 0.61.4
    "react-navigation": "^4.3.7",
    "react-navigation-stack": "^1.10.3",

1 Ответ

2 голосов
/ 24 апреля 2020

Чтобы исправить «при переходе от C к B (2), новый экран должен отображаться справа налево (как предыдущие переходы)» на экране C используйте этот код для навигации:

// this pushes B into the stack insted of navigating to B
() => navigation.push('B')

Это «Когда я нахожусь на B (2) и использую navigation.goBack (), я должен видеть C», будет уже исправлено, потому что порядок стеков правильный, используя pu sh вместо навигационной системы. Таким образом, ваш экран предварительного просмотра стека будет C.

...