我在我的 React 本机应用程序上使用 React-navigation 6 我在每个堆栈上有两个StackNavigator
屏幕BottomStackNavigator
和参数:
export type BottomNavigationStack = {
Planner: undefined,
Profile: undefined,
}
export type PlannerNavigationStack = {
PlannerHome: undefined,
PlannerDetails: {
detail: { ... }
},
Profile: {
screen: string,
initial?: boolean,
params?: { [name: string]: string }
}, // We can go to ProfileNavigationStack from PlannerNavigationStack
}
export type PlannerNavDetailProps = StackScreenProps<PlannerNavigationStack, 'PlannerDetails'>
export type ProfileNavigationStack = {
ProfileHome: undefined,
ProfileAddThings: {
service: string
from: string,
},
Planner: {
screen: string,
initial?: boolean,
params?: { [name: string]: string }
}, // We can go to PlannerNavigationStack from ProfileNavigationStack
}
export type ProfileNavAddThingsProps = StackScreenProps<ProfileNavigationStack, 'ProfileAddThings'>
所以我试图从 PlannerStack 导航到 ProfileStack,当我在 ProfileStack 中时,我想回到 PlannerStack。
我从 PlannerStack 去 ProfileStack 没有问题,如下所示:
navigation.navigate('Profile', {
screen: 'ProfileAddThings',
params: {
service: 'myservice',
from: 'myfrom',
},
initial: false,
})
所以在那一刻我ProfileStack
在屏幕上ProfileAddThings
。如果我阅读文档,PlannerStack
保留它的历史记录,如果我点击 Planner 的 bottomTab 按钮,我可以看到页面仍然是PlannerDetails
. 但是,当我点击屏幕的后退按钮时ProfileAddThings
,我会回到ProfileHome
。我试图用该代码覆盖屏幕的 backButton 操作ProfileAddThings
:
navigation.navigate('Planner', { screen: 'PlannerDetails' })
但我得到了错误:undefined is not an object (evaluating 'route.params.detail')
细节是PlannerDetails
屏幕的一个参数。
我真的不明白为什么这个参数是未定义的,因为 de PlannerStack 历史仍然存在。
有人已经从 react native 中的嵌套导航返回?
谢谢