reactnavigation

本文介绍如何在React Native项目中使用react-navigation库进行页面跳转和底部导航配置,包括createNativeStackNavigator和createBottomTabNavigator的用法。同时解决react-native-vector-icons图标不显示的问题,通过在项目配置和代码中引入图标组件实现自定义导航栏图标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

reactnavigation 跳转和底部导航的使用

在这里插入图片描述

项目的json文件

{
  "name": "333",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint .",
    "build": "cd android && gradlew assembleRelease",
    "debug": "cd android && gradlew assembleDebug"
  },
  "dependencies": {
    "@react-navigation/bottom-tabs": "^6.3.1",
    "@react-navigation/native": "^6.0.10",
    "@react-navigation/native-stack": "^6.6.2",
    "react": "17.0.2",
    "react-native": "0.65.0",
    "react-native-safe-area-context": "^4.2.5",
    "react-native-screens": "^3.13.1",
    "react-native-vector-icons": "^9.1.0"
  },
  "devDependencies": {
    "@babel/core": "^7.18.2",
    "@babel/runtime": "^7.18.3",
    "@react-native-community/eslint-config": "^3.0.2",
    "babel-jest": "^28.1.0",
    "eslint": "^8.16.0",
    "jest": "^28.1.0",
    "metro-react-native-babel-preset": "^0.71.0",
    "react-native-codegen": "^0.0.7",
    "react-test-renderer": "17.0.2"
  },
  "jest": {
    "preset": "react-native"
  }
}

react-native-vector-icons icon 不显示问题

react-native link react-native-vector-icons
或者
android/app/build.gradle文件,添加如下内容:(不添加这块内容会导致图标不能显示,显示X)

project.ext.vectoricons = [
    iconFontNames: [ 'MaterialIcons.ttf', 'EvilIcons.ttf' ]
]
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"

两个分别试下,

直接上app.js 代码

// In App.js in a new project

import * as React from 'react';
import { View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import Ionicons from 'react-native-vector-icons/Ionicons';
import login from './laundry/page/login'
function HomeScreen() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text >Home Screen</Text>
    </View>
  );
}

function HomeScreen2() {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>HomeScreen2</Text>
    </View>
  );
}

const Stack = createNativeStackNavigator();
const Tab = createBottomTabNavigator();
function HomeTabs() {
  return (
    <Tab.Navigator
      screenOptions={({ route }) => ({
        tabBarIcon: ({ focused, color, size }) => {
          let iconName;

      if (route.name === 'Home') {
        iconName = focused
          ? 'home-outline'
          : 'home-outline';
      } else if (route.name === 'Settings') {
        iconName = focused ? 'planet-outline' : 'planet-outline';
      }
{/* <ion-icon name="planet-outline"></ion-icon> */}
          // You can return any component that you like here!
          return <Ionicons name={iconName} size={size} color={color} />;
        },
        tabBarActiveTintColor: 'yellow',
        tabBarInactiveTintColor: 'red',
      })}
    >
      <Tab.Screen name="Home" component={login}  options={{ tabBarBadge: 3 }} />
      <Tab.Screen name="Settings" component={HomeScreen2} />
    </Tab.Navigator>
  );
}
function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName="Home"  
      // screenOptions={{headerShown:false}}  控制是否显示头部导航栏
      >
        <Stack.Screen name="Home3"  component={HomeTabs} options={{ title: 'Home',headerMode:'none' ,headerShown:false }}  />
        <Stack.Screen name="Home2" component={HomeScreen} options={{ headerShown:false }}  />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

export default App;

headerShown:false:控制是否显示头部导航栏

官方文档的地址 https://reactnavigation.org/

### React Navigation 库的使用与文档 React Navigation 是一个用于构建原生导航体验的强大工具,适用于 iOS 和 Android 平台上的 React Native 应用程序[^1]。它允许开发者创建复杂的导航结构,例如堆栈导航、标签栏导航以及抽屉导航。 #### 安装 React Navigation 要开始使用 React Navigation,首先需要安装必要的依赖项。以下是安装命令: ```bash npm install @react-navigation/native ``` 由于 `@react-navigation/native` 需要一些 peer dependencies(如 React Native 的核心模块),还需要额外安装这些包: ```bash npm install react-native-screens react-native-safe-area-context react-native-gesture-handler react-native-reanimated ``` 对于不同的导航器类型,还需单独安装对应的组件。例如,如果计划使用堆栈导航,则需执行以下命令: ```bash npm install @react-navigation/stack ``` #### 基本配置 完成安装后,在项目中引入所需的导航组件并设置基础路由。下面是一个简单的例子展示如何初始化一个基本的堆栈导航器: ```javascript import * as React from 'react'; import { createStackNavigator } from '@react-navigation/stack'; import { NavigationContainer } from '@react-navigation/native'; // 导入页面组件 function HomeScreen() { return ( <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}> <Text>Home Screen</Text> </View> ); } const Stack = createStackNavigator(); export default function App() { return ( <NavigationContainer> <Stack.Navigator initialRouteName="Home"> <Stack.Screen name="Home" component={HomeScreen} /> </Stack.Navigator> </NavigationContainer> ); } ``` 此代码片段展示了如何通过 `createStackNavigator` 创建一个堆栈导航器,并将其嵌套到 `NavigationContainer` 中[^1]。 #### 自定义选项 可以自定义屏幕标题或其他参数来增强用户体验。例如,修改上面的例子以添加标题和头部样式: ```javascript <Stack.Screen name="Home" component={HomeScreen} options={{ title: 'My Home', headerStyle: { backgroundColor: '#f4511e' }, headerTintColor: '#fff' }} /> ``` 以上代码设置了特定于该屏幕的标题颜色和其他视觉属性[^1]。 #### 文档资源 官方文档提供了详尽的信息和支持材料,帮助开发人员深入理解其功能集及其最佳实践方法。访问链接获取更多详情:https://reactnavigation.org/docs/getting-started/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值