RN导航路由配置

tabbar底部导航栏

安装依赖包

需要安装四个依赖包(自己找适配自己RN的导航版本,我这里RN下面的依赖目前都是最新的,如下图所示)react-navigation/native 网站 yarn add @react-navigation/native yarn add @react-navigation/bottom-tabs yarn add react-native-screens react-native-safe-area-context

新建两个tabbar页面

这里我做的homeScreen.jsSettingsScreen.js

homeScreen.js

js 复制代码
import {Text, View} from 'react-native';

export default function homeScreen() {
  return (
    <View>
      <Text>123</Text>
    </View>
  );
}

SettingsScreen.js

js 复制代码
import {Text, View} from 'react-native';

export default function SettingsScreen() {
  return (
    <View>
      <Text>456</Text>
    </View>
  );
}

配置tabbar页面,这里新起个页面,例如我这里做个MyTabs.js

MyTabs.js

js 复制代码
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import HomeScreen from './homeScreen'
import SettingsScreen from './SettingsScreen'
import { Image } from 'react-native';
const Tab = createBottomTabNavigator();

function MyTabs() {
  return (
    <Tab.Navigator>
      <Tab.Screen name="Home" component={HomeScreen} options={{tabBarIcon:({color,size})=>{
        return (  // 底部栏图标
          <Image style={{width:15,height:15}} source={require('./1212.png')}></Image>
        )
      }}}/>
      <Tab.Screen name="Settings" component={SettingsScreen} options={{tabBarIcon:({color,size})=>{
        return (
          <Image style={{width:15,height:15}} source={require('./1212.png')}></Image>
        )
      }}}/>
    </Tab.Navigator>
  );
}

export default MyTabs

App.js内容如下

js 复制代码
import { NavigationContainer } from '@react-navigation/native';
import MyTabs from './src/MyTabs';
function App() {
  return (
    <NavigationContainer>
      <MyTabs />
    </NavigationContainer>
  );
}
export default App

项目结构如下: 效果图

非tabbar页面的导航

安装三个插件 yarn add @react-navigation/native 如果上面装过了这个就不用装了 yarn add @react-navigation/stack yarn add react-native-gesture-handler

homeScreen.js

js 复制代码
import {Button, Text, View} from 'react-native';

export default function homeScreen(params) {
  console.log(params);
  return (
    <View>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Text>123</Text>
      <Button title='点击跳转另一个页面' onPress={()=>{params.navigation.navigate('Setting',{name:'zhangsan'})}}></Button>
    </View>
  );
}

settingsScreen.js

js 复制代码
import {Button, Text, View} from 'react-native';

export default function SettingsScreen(props) {
  return (
    <View>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Text>456</Text>
      <Button title='返回到上一级' onPress={()=>{props.navigation.goBack()}}></Button>
    </View>
  );
}

配置导航路由页面MyTab.js

js 复制代码
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import HomeScreen from './homeScreen';
import SettingsScreen from './SettingsScreen';

const Stack = createStackNavigator();

function MyTabs() {
  return (
    <Stack.Navigator> // screenOptions={{ headerShown: false }} 这里还有个参数可以隐藏上面的导航条,我这里没有加,如果有需要隐藏就加上,如果需要这个返回键又需要在导航条加样式的话,建议自己做个组件
      <Stack.Screen name="Home" component={HomeScreen} />
      <Stack.Screen name="Setting" component={SettingsScreen} />
    </Stack.Navigator>
  );
}

function App() {
  return (
    <NavigationContainer>
      <MyTabs />
    </NavigationContainer>
  );
}

export default App;

App.js

js 复制代码
import MyTabs from './src/MyTabs';
function App() {
  return (
      <MyTabs />
  );
}
export default App

效果图 点击跳转后的效果图

跳转后的新页面可以通过props.route拿到路由参数

相关推荐
Revio Lab11 分钟前
把 AI 生成的 HTML 当 Markdown 来管:Web-Doc 自托管文档站实践
前端·html·mcp·html文档
之歆22 分钟前
DAY_13DOM操作完全指南DOM基础API与节点操作(上)
开发语言·前端·javascript·ecmascript
zhoumeina9925 分钟前
如何保证不同位置切换合成底图的渲染顺序
java·前端·javascript
海上彼尚27 分钟前
Nodejs也能写Agent - 3.基础篇 - Tools 与 Tool Calling
前端·人工智能·后端·node.js
用户1257585243632 分钟前
GoFrame + Vue3 后台管理框架,CRUD 代码生成器一键搭 RBAC 权限系统
前端
七十二時_阿川33 分钟前
Electron 如何自定义菜单?这篇帮你实现原生体验!
前端·electron
七十二時_阿川38 分钟前
Electron App 速查表:生命周期事件、方法、平台差异
前端·electron
七十二時_阿川38 分钟前
Electron 多显示器开发?这篇帮你搞定屏幕坐标与窗口定位!
前端·electron
七十二時_阿川40 分钟前
Electron Tray API 详解:托盘图标、右键菜单、气泡通知
前端·electron
番茄炒韭菜42 分钟前
windows10下安装mise
前端