Ema*_*aid 5 react-native react-navigation react-navigation-drawer react-navigation-stack
我刚刚从 React Native 5.x 迁移到 6.x,现在我的导航堆栈出现了问题。当我在抽屉导航器深处导航几个屏幕,然后按 Android 上的后退按钮(没有尝试过 IOS)时,它会直接带我回到第一个屏幕。我的导航堆栈如下
<NavigationContainer theme={MyTheme}>
<Drawer.Navigator
initialRouteName="NewsFeed"
drawerContent={(props) => <SideNav {...props} />}
screenOptions={{ headerShown: true, header: (options) => <TopNav options={options} /> }}
>
<Drawer.Screen name="NewsFeed" component={NewsFeedScreen} />
<Drawer.Screen name="Post" component={PostScreen} />
<Drawer.Screen name="Users" component={UsersScreen} />
<Drawer.Screen name="User" component={UserScreen} />
...
</Drawer.Navigator>
</NavigationContainer>
Run Code Online (Sandbox Code Playgroud)
我不确定问题是什么,也没有在任何地方找到任何答案。有人说将每个屏幕包裹在堆栈导航器中,其他人则说这是一个坏主意。
小智 6
我不确定这是否是您所要求的,但对于 React Navigation Upgrading from 5.x帮助页面中列出的更改:
backBehavior 的默认值现在是选项卡和抽屉的 firstRoute
进而:
为了保留旧的行为,您可以将 backBehavior="history" 属性传递给导航器
因此,您可以在代码中正确设置 backBehavior 属性,如下所示:
<NavigationContainer theme={MyTheme}>
<Drawer.Navigator
initialRouteName="NewsFeed"
drawerContent={(props) => <SideNav {...props} />}
screenOptions={{ headerShown: true, header: (options) => <TopNav options={options} /> }}
backBehavior="history" // <-- ADDED PROP
>
...
</NavigationContainer>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1896 次 |
最近记录: |