【发布时间】:2021-09-08 20:29:12
【问题描述】:
在我的 react-native 应用程序中,我正在升级到 react-navigation v5。对于 AppNavigator,它被传递到我的主 App.js 文件中,旧代码如下所示:
import { createAppContainer, createSwitchNavigator, createStackNavigator } from 'react-navigation';
import LoginScreen from '../screens/LoginScreen';
import LoadingScreen from '../screens/LoadingScreen';
const AuthStack = createStackNavigator({
Login: LoginScreen,
Loading: LoadingScreen
});
import MainDrawerNavigator from './DrawerNavigator';
export default createAppContainer(createSwitchNavigator({
Main: MainDrawerNavigator,
Auth: AuthStack
},
{
initialRouteName: 'Auth',
}));
代码在 App.js 中使用如下:
<Provider store={store}>
<NavigationContainer ref={navigationRef}>
<View style={styles.container}>
{Platform.OS === 'ios' && <StatusBar barStyle="light-content" />}
<AppNavigator ref={nav => { navigatorRef = nav }} /> // AppNavigator used here
</View>
</NavigationContainer>
</Provider>
据我所知,createAppContainer 不再是 react-navigation v5 中处理此问题的方法。我在此导入时遇到错误:
import { createAppContainer, createSwitchNavigator, createStackNavigator } from 'react-navigation';
... 部分原因是此类导入位置的目录结构已更改。但据我所知,createAppContainer 现在不存在了吗?换句话说,这不仅仅是它现在位于其他地方的问题。如果我错了,请纠正我。
所以我的问题是,这段代码在 v5 中应该是什么样子?任何见解将不胜感激。我指的是这个AppNavigator代码:
import { createAppContainer, createSwitchNavigator, createStackNavigator } from 'react-navigation';
import LoginScreen from '../screens/LoginScreen';
import LoadingScreen from '../screens/LoadingScreen';
const AuthStack = createStackNavigator({
Login: LoginScreen,
Loading: LoadingScreen
});
import MainDrawerNavigator from './DrawerNavigator';
export default createAppContainer(createSwitchNavigator({
Main: MainDrawerNavigator,
Auth: AuthStack
},
{
initialRouteName: 'Auth',
}));
【问题讨论】:
标签: reactjs react-native react-navigation-v5