我使用下面的结构来组织我的屏幕
有一个底部选项卡导航器显示两个屏幕:Jobs
和Notification
。Jobs
屏幕是一个堆栈导航器,它有两个屏幕:Job
用于显示作业列表,JobDetail
用于显示作业的详细信息。当点击通知时,我需要导航到相应的JobDetail
屏幕。
我的问题是:是否有一种方法可以返回到Notification
选项卡通过按后退按钮从JobDetail
屏幕,鉴于我导航到JobDetail
屏幕通过点击其中一个通知放在首位?目前,当我点击JobDetail
屏幕上的后退按钮时,它会带我回到Job
屏幕,而不是我想让它回到Notification
屏幕。
我还在这里包含了一个工作演示:https://snack.expo.dev/@atosh502/go- to- back- tab-example
更新答案:
正如这个答案所述,您必须将backBehavior
prop添加到选项卡导航器中。
<Tab.Navigator
...
backBehavior={'history'}
>
// ...
</Tab.Navigator>
查看文档获取更多信息。
老答:
这似乎是@react-navigation/native: ^6.x
回到版本5的一个问题。X可以解决这个问题。只使用
npm install @react-navigation/native@5.9.8;
以下是所做的更改,希望它也适用于您:
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>
)
}
请在这里查看这个工作演示:点击这里