我在消化官方文档时遇到了困难,并且我一直在寻找在不同堆栈导航器之间移动的解决方案。我提供了我当前的实现和代码片段来更好地解释我的问题。
我有一个底部选项卡导航器和 2 个堆栈导航器来处理不同的用例。
BottomNavigation.js
StackNavigation.js
AuthStackNavigation.js
我在其中创建了多个堆栈导航器并在StackNavigation.js
其中渲染了每个 StackNavigatorBottomNavigation.js
***StackNavigation.js***
const Stack = createStackNavigator();
const HomeStackNavigator = () => {
return (
<Stack.Navigator initialRouteName="Home" screenOptions={ScreenLogo}>
<Stack.Screen name="HomeScreen" component={Home} />
</Stack.Navigator>
);
}
const ProfileStackNavigator = () => {
return (
<Stack.Navigator initialRouteName="Home" screenOptions={ScreenLogo}>
<Stack.Screen name="MahaExpo" component={Profile} />
</Stack.Navigator>
);
}
export { HomeStackNavigator, ProfileStackNavigator };
正如我所说,我正在渲染选项卡导航器中的每个导航器以在屏幕之间切换。
***BottomNavigation.js***
import { HomeStackNavigator, ProfileStackNavigator } from '../Navigations/StackNavigation'
const Tab = createMaterialBottomTabNavigator();
function BottomNavigation() {
return (
<Tab.Navigator
initialRouteName="Home" >
<Tab.Screen
name="Home"
component={HomeStackNavigator}
/>
<Tab.Screen
name="ProfileStackNavigator"
component={ProfileStackNavigator}
/>
</Tab.Navigator>
)
}
export default BottomNavigation
我在 app.js 和 NavigationContainer 中渲染它。我创建了具有登录和注册屏幕的 AuthStackNavigation.js。
***AuthStackNavigation.js***
const AuthStack = createStackNavigator();
const AuthStackNavigation = ({ }) => (
<AuthStack.Navigator headerMode='none'>
<AuthStack.Screen name="UserLogin" component={UserLogin}></AuthStack.Screen>
<AuthStack.Screen name="UserRegister" component={UserRegister}></AuthStack.Screen>
</AuthStack.Navigator>
);
export default AuthStackNavigation
所以目前,我正在显示带有一些公共内容的主屏幕,用户可以使用链接到不同屏幕的底部选项卡导航器切换到不同的屏幕。当用户单击配置文件选项卡时,我会显示一个登录按钮,该按钮应将用户带到具有登录和注册屏幕的AuthStackNavigation.js 。提前致谢!