Вернитесь на предыдущую вкладку при нажатии кнопки назад

#javascript #react-native #react-navigation

Вопрос:

Я использую следующую структуру для организации своих экранов

Есть навигатор по нижней вкладке, который отображает два экрана: Jobs и Notification . Jobs экран-это навигатор стека, который имеет два экрана: Job для списка заданий и JobDetail для отображения сведений о задании. При нажатии на уведомление мне нужно перейти на соответствующий JobDetail экран.

Мой вопрос: есть ли способ вернуться на Notification вкладку, нажав кнопку «Назад» с JobDetail экрана, учитывая, что я перешел на JobDetail экран, нажав в первую очередь на одно из уведомлений? В настоящее время, когда я нажимаю кнопку «Назад» на JobDetail экране, она возвращает меня на Job экран, и вместо этого я хочу, чтобы он вернулся на Notification экран.

Я также включил здесь рабочую демонстрацию: https://snack.expo.dev/@atosh502/go-back-to-tab-example

Ответ №1:

Вот внесенные изменения, и я надеюсь, что это сработает и для вас:

 const Tabs = () => {
  return (
    <Tab.Navigator>
      <Tab.Screen
        name="Job"
        component={Job} //remove JobStack and keep just Job screen
        />
      <Tab.Screen
        name="Notification"
        component={NotificationStack} //keep NotificationStack instead of page so you'll get back to that page
        />
    </Tab.Navigator>
  )
}
// remove/comment your JobStack screen    
// const JobStack = () => {
//   return (
//     <Stack.Navigator>
//       <Stack.Screen name="Job" component={Job} />
//       <Stack.Screen name="JobDetail" component={JobDetail} />
//     </Stack.Navigator>
//   )
// }

//Add this NotificationStack screen
const NotificationStack = () => {
  return (
    <Stack.Navigator>
      <Stack.Screen name="Notification" component={Notification}/>
      <Stack.Screen name="Jobs" component={JobDetail} options={{title: 'Notification'}}/>
    </Stack.Navigator>
  )
}
 

Пожалуйста, проверьте эту рабочую демонстрацию здесь: нажмите здесь

Комментарии:

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