reactjs - 如何在 React-native 的其他文件中导航到其他导航器中的页面?
问题描述
我和一些人制作了一个带有 react native 的应用来练习,后来发现我们使用了两个不同的导航器。
我试图结合但失败了,并试图谷歌但找不到任何令人满意的答案。
我只想在退出后打电话给 SplashScreen。
所以这里是初始屏幕的代码,包括 Auth aka SplashScreen:
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import Auth from './../screens/Auth'
...
import Welcome from './../screens/Welcome'
import MainApp from './MainApp' //this contains signout page
const Stack = createNativeStackNavigator();
const RootStack = () => {
return(
<NavigationContainer>
<Stack.Navigator
screenOptions={{
headerShown:false}
}}
initialRouteName="Auth"
>
<Stack.Screen name= "Auth" component={Auth} />
...
<Stack.Screen />
<Stack.Screen name="MainApp" component={MainApp}/>
</Stack.Navigator>
</NavigationContainer>
)
这是包含我的信息和注销的代码:
import 'react-native-gesture-handler';
import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
const Stack=createStackNavigator()
const HomeScreenOptions={
headerStyle:{backgroundColor:'lightblue'},
headerTitleStyle:{color:'black', justifyContent:'center'},
headerTintColor:'white',
}
const Tabs = createBottomTabNavigator();
const YourwordsStack = createStackNavigator();
const HomeStack = createStackNavigator();
const MyInfoStack = createStackNavigator();
const YourwordsStackScreen =()=>(
<YourwordsStack.Navigator screenOptions={HomeScreenOptions}>
<YourwordsStack.Screen name="Yourwords" component={YourwordsScreen}/>
</YourwordsStack.Navigator>
)
const HomeStackScreen =()=>(
<HomeStack.Navigator
screenOptions={HomeScreenOptions}
>
<HomeStack.Screen name="Home" component={HomeScreen} />
<HomeStack.Screen name="Yourwords" component={YourwordsScreen} />
<HomeStack.Screen name="Mywords" component={MywordsScreen}/>
</HomeStack.Navigator>
)
const MyInfoStackScreen =()=>(
<MyInfoStack.Navigator screenOptions={HomeScreenOptions}>
<MyInfoStack.Screen name="MyInfo" component={MyInfoScreen}/> // this page needs to be connected with Auth
<MyInfoStack.Screen name="MyWordsHistory" component={MyWordsHistory}/>
<MyInfoStack.Screen name="MyMessages" component={MyMessages}/>
</MyInfoStack.Navigator>
)
export default function MainApp({navigation}) {
return (
<NavigationContainer independent={true}>
<Tabs.Navigator
initialRouteName="HomeTab"
screenOptions={{
tabBarHideOnKeyboard:true,
tabBarStyle:[
{
display:'flex'
},
null
]
}}
>
<Tabs.Screen
name="YourwordsTab"
component={YourwordsStackScreen}
options={{
headerShown:false,
}}
/>
<Tabs.Screen
name="HomeTab"
component={HomeStackScreen}
options={{
headerShown:false,
}}
/>
<Tabs.Screen
name="MyInfoTab"
component={MyInfoStackScreen}
options={{
headerShown:false,
}}
/>
</Tabs.Navigator>
</NavigationContainer>
)
}
所以第一个问题是我们使用了不同的导航器,第二个问题是我们不能真正通过不同的文件将一个页面链接到另一个页面。
我该如何解决这个问题?
解决方案
推荐阅读
- python - Pandas to_sql 索引从 1 开始
- scala - 使用 ThisBuild 在多项目 Scala SBT 上进行测试的不同选项
- azure-devops - 如何在较新的 azure-devops-extension-sdk 包中获取当前团队 ID
- python - Scrapy 上的蜘蛛爬行错误,用户代理不工作
- python - 错误 400:redirect_uri_mismatch - Google 电子表格 API - Python
- ios - 配置文件与 com.apple.developer.default-data-protection 权利的权利文件值不匹配
- monaco-editor - 摩纳哥编辑器是否支持小地图中的增量装饰?
- python - 有没有办法将循环结果作为熊猫数据框?
- angular - Angular 使用私有库
- c++ - 提升矩阵矩阵产品定义