Как я могу вернуться к тому экрану, которым был раньше при переходе в другой навигатор - PullRequest
1 голос
/ 08 апреля 2020

Итак, у меня следующая структура:

  <BottomTab.Navigator>
    <BottomTab.Screen name="Feed" component={FeedScreen} />
    <BottomTab.Screen name="Profile" component={ProfileScreen} />
  </BottomTab.Navigator>

  <Stack.Navigator>
    <Stack.Screen name="Tabs" component={BottomTabsNavigator} />
    <Stack.Screen name="Article" component={ArticleScreen} />
  </Stack.Navigator>

Теперь, чтобы перейти от экрана статьи к экрану профиля, мне нужно сначала go перейти в Навигатор вкладок, а оттуда - в профиль, чтобы я делаем следующее:

  navigation.navigate('Tabs', {screen: "Profile"})

Все отлично работает. Единственная проблема, с которой я сталкиваюсь сейчас, - это когда я нажимаю обратно оттуда (экран профиля), я ожидаю, что он вернет меня на экран статьи, но на самом деле это приведет меня к навигатору вкладок к экрану подачи. Есть идеи, как достичь ожидаемого результата?

Что я сейчас делаю, так это то, что на экране профиля я ожидаю параметр маршрута с именем backRoute, который является необязательным, и, если он отправляется, при нажатии I go на этот маршрут, в противном случае возвращаться(). Это не похоже на чистый способ сделать это, и это определенно не масштабируется

1 Ответ

0 голосов
/ 08 апреля 2020

Вы можете попытаться переопределить кнопку «Назад» на экране профиля, а затем определить его поведение в зависимости от экрана, который его вызвал: Примерно так:

<BottomTab.Screen 
     name="Profile" 
     component={ProfileScreen}
     headerRight: () => (
            <Button
              onPress={() => 
                if(lastScreen ==='test1'){
                 //navigate to screen 1
                 }else{
                 //navigate to screen 2  }}
               />)
          ),/>

Чтобы определить lastScreen, используйте параметры навигации:

это способ использования с response-navigation v4 для v5. Я не тестировал его

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