React Navigation 入门指南 – wiki基地


React Navigation 入门指南:构建流畅的 React Native 应用导航

作为 React Native 开发者,构建用户界面只是故事的一部分。用户需要在应用的各个屏幕之间进行切换、跳转,这是一个核心功能,称为“导航”。一个优秀的应用导航系统不仅能提供流畅的用户体验,还能有效地管理屏幕之间的状态和数据传递。在 React Native 生态系统中,React Navigation 无疑是事实上的标准和最受欢迎的导航解决方案。

本篇文章将带你深入了解 React Navigation,从零开始,一步步学习如何在你的 React Native 项目中集成并使用它。我们将涵盖其核心概念、安装步骤、最常见的导航器类型(Stack, Tab, Drawer),以及如何在屏幕之间传递数据和进行高级配置。

什么是 React Navigation?为什么选择它?

React Navigation 是一个用于 React Native 应用的导航库。它由社区维护,提供了构建原生导航堆栈、Tab 栏、抽屉菜单等多种导航模式的灵活方式。它的设计理念是基于 JavaScript 构建,但能利用原生平台的导航能力,从而提供高性能和接近原生的体验。

为什么选择 React Navigation?

  1. 社区标准: 它是 React Native 生态中最广泛使用和推荐的导航库,拥有活跃的社区支持和丰富的文档。
  2. 灵活性: 提供了多种导航器类型,可以轻松组合嵌套,满足复杂应用的需求。
  3. 可定制性: 几乎所有导航器的视觉和行为都可以通过配置进行定制。
  4. 性能: 利用 react-native-screensreact-native-safe-area-context 等依赖,优化了屏幕渲染和内存使用,提升了性能。
  5. 声明式 API: 使用声明式组件的方式定义导航结构,与 React/React Native 的开发范式一致。

前置条件

在开始之前,你需要确保你的开发环境已经准备好:

  1. Node.js 和 npm/yarn: 安装了 Node.js,通常也包含了 npm。推荐使用 yarn,因为它通常更快更稳定。
  2. React Native 开发环境: 已经设置好了 React Native 开发环境,无论是通过 Expo CLI 创建的项目还是使用 React Native CLI 创建的裸项目。
  3. 一个 React Native 项目: 准备好一个空白或已有的 React Native 项目,我们将在其中集成 React Navigation。

安装 React Navigation

React Navigation 的安装分为核心库和根据你需要的导航器类型安装额外的库。此外,为了优化性能和处理安全区域,还需要安装一些底层依赖。

打开你的项目终端,执行以下命令:

1. 安装核心库:

“`bash

使用 npm

npm install @react-navigation/native

使用 yarn

yarn add @react-navigation/native
“`

这是 React Navigation 的基础库,提供了导航容器和一些核心工具。

2. 安装底层依赖 (必需):

为了优化原生性能,React Navigation 依赖于 react-native-screens。同时,为了正确处理设备刘海屏、底部导航条等安全区域,需要 react-native-safe-area-context

“`bash

使用 npm

npm install react-native-screens react-native-safe-area-context

使用 yarn

yarn add react-native-screens react-native-safe-area-context
“`

特别说明:

  • Expo 项目: 如果你使用 Expo 管理的项目,可以使用 expo install 来安装,这会确保安装与你 Expo SDK 版本兼容的库版本:
    bash
    expo install @react-navigation/native react-native-screens react-native-safe-area-context
  • Bare React Native 项目: 对于使用 react-native init 创建的项目,安装完后,对于较旧的 React Native 版本(0.60 之前),可能需要手动链接库 (react-native link)。但对于 React Native 0.60 及以上版本,原生模块链接是自动的(称为 Auto-linking),你通常只需要运行 pod install (iOS) 来安装原生依赖。
    bash
    # 进入 ios 目录并安装 Pods (仅限 iOS)
    cd ios
    pod install
    cd ..

3. 安装你需要的导航器库:

React Navigation 将不同的导航器类型拆分到单独的库中,这样你只需要安装你实际使用的部分。最常见的是 Stack 导航器。

  • Stack 导航器 (栈导航): 用于实现常见的 Push/Pop 导航模式,如页面详情页、设置页等。
    “`bash
    # 使用 npm
    npm install @react-navigation/stack

    使用 yarn

    yarn add @react-navigation/stack
    * **Bottom Tabs 导航器 (底部 Tab 栏):** 用于实现底部 Tab 切换不同的主要功能模块。bash

    使用 npm

    npm install @react-navigation/bottom-tabs

    使用 yarn

    yarn add @react-navigation/bottom-tabs
    * **Drawer 导航器 (抽屉菜单):** 用于实现侧滑抽屉菜单。bash

    使用 npm

    npm install @react-navigation/drawer

    使用 yarn

    yarn add @react-navigation/drawer
    * **Material Bottom Tabs 导航器 (Material Design 底部 Tab 栏):** 基于 Material Design 风格的底部 Tab 栏。bash

    使用 npm

    npm install @react-navigation/material-bottom-tabs react-native-paper react-native-vector-icons

    使用 yarn

    yarn add @react-navigation/material-bottom-tabs react-native-paper react-native-vector-icons
    注意:Material 底部 Tab 依赖 `react-native-paper` (一个 Material Design UI 库) 和 `react-native-vector-icons` (图标库)。
    * **Material Top Tabs 导航器 (Material Design 顶部 Tab 栏):** 用于实现页面顶部的 Tab 切换。
    bash

    使用 npm

    npm install @react-navigation/material-top-tabs react-native-tab-view

    使用 yarn

    yarn add @react-navigation/material-top-tabs react-native-tab-view
    ``
    注意:Material 顶部 Tab 依赖
    react-native-tab-view`。

本文后续将主要以 Stack 和 Bottom Tabs 导航器为例进行讲解。

安装完成后,重启你的开发服务器,以确保所有依赖都被正确加载。

核心概念:NavigationContainer, Navigators 和 Screens

在使用 React Navigation 之前,理解其核心概念至关重要:

  1. NavigationContainer (导航容器):

    • 这是整个应用导航树的根组件。
    • 它管理着应用的导航状态,并包含了各个导航器的上下文。
    • 你的所有导航结构都必须包裹在 <NavigationContainer> 内部。
    • 通常只在应用的顶层渲染一次 (例如在 App.jsindex.js 中)。
  2. Navigators (导航器):

    • 导航器是 React Navigation 的核心构建块。
    • 它们负责管理一组屏幕,并提供导航方法(如跳转、返回)。
    • 不同类型的导航器提供不同的导航模式 (栈、Tab 栏、抽屉等)。
    • 导航器本身也是 React 组件,它们接收 <Screen> 组件作为子元素来定义可导航的屏幕。
    • 常见的导航器创建函数有 createStackNavigator, createBottomTabNavigator, createDrawerNavigator 等。这些函数返回一个包含 NavigatorScreen 属性的对象。
  3. Screens (屏幕):

    • 屏幕代表了应用中的一个可导航的界面。
    • 在 React Navigation 中,一个“屏幕”通常就是一个普通的 React 组件。
    • 你在导航器中通过 <Navigator.Screen> 组件来注册你的屏幕组件,并为其指定一个唯一的名称 (name prop) 和要渲染的组件 (component prop)。
    • Screen 组件还接收一个 options prop,用于配置该屏幕在导航器中的表现 (如 Stack 导航中的标题栏样式,Tab 导航中的 Tab 图标和标签等)。

构建第一个导航:一个简单的 Stack 导航器

Stack 导航器是最基础和常见的导航模式。它像一叠卡片一样工作:新屏幕会叠在当前屏幕上方,当你返回时,顶部的屏幕会被移除,露出下面的屏幕。

我们将创建一个包含两个屏幕的应用:Home 屏幕和 Details 屏幕。从 Home 屏幕可以跳转到 Details 屏幕,从 Details 屏幕可以返回 Home 屏幕。

1. 创建屏幕组件:

首先,创建两个简单的 React Native 组件作为我们的屏幕。

创建一个文件,例如 screens/HomeScreen.js:

“`javascript
// screens/HomeScreen.js
import React from ‘react’;
import { View, Text, Button, StyleSheet } from ‘react-native’;

function HomeScreen({ navigation }) {
return (

首页

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部