#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. хорошо, это работает… Я забыл упомянуть в вопросе, что мне также нужно перейти на страницу сведений из списка заданий… но спасибо за ответ, я думаю, что мне нужно включить экран сведений как в стек заданий, так и в стек уведомлений…. Я надеялся, что есть какой-то другой способ сделать это