这是根导航器
export const AppNavigator = StackNavigator({
Splash: { screen: Splash },
Dashboard: { screen: DashboardDrawer }
});
const DashboardDrawer = DrawerNavigator({ DashboardScreen: {
screen: StackNavigator({
A: { screen: A },
B: { screen: B },
C: { screen: C },
D: { screen: D },
}
}, {
contentComponent: DashboardDrawerComponent,
drawerWidth: 280
});
我有4个屏幕 - A,B,C,D在我的堆栈中 . 我想从D跳到A.(或D到任何屏幕)我提到了以下反应导航文档 - https://reactnavigation.org/docs/navigators/navigation-prop#goBack-Close-the-active-screen-and-move-back
以上文件 . 说明从屏幕D到屏幕A(弹出D,C和B)你需要提供一个goBack FROM的密钥,在我的情况下是B,就像这样
navigation.goBack(SCREEN_KEY_B)
所以,我的问题是 from where should I get the key for a specific screen? 我检查了我的根导航对象,它向我显示了每个屏幕的一些动态生成的密钥 . How can I specify my own keys for the screens?
3 回答
这很棘手!
我提到了这部分反应导航文档,并且已经实现了上述目标! https://reactnavigation.org/docs/routers/#Custom-Navigation-Actions
这是怎么回事
1. 在问题中改变了我的DrawerNavigator,稍微改编(以适应下面的stacknavigator)
2. 在屏幕D中调度了一个动作
3. 在我的堆栈导航器上收听此操作
看起来他们现在正在做的方式是保存你想通过
params
回来的屏幕的关键 . 因此,一旦你进入B并导航到C,你将屏幕键传递给C作为参数,然后当你从C导航到D时,你将B的键传递给D作为参数 .更多信息here .
我使用了
NavigatorService
的设置,如下面的概述here .从服务中,我揭露了以下内容:
这对我很有用 .