expo中使用react navigation 6.x笔记

2023-05-16

新版本react navigation 6.x,与5.x有什么区别呢?记个笔记吧!

文章目录

  • 环境
  • 安装依赖
  • 安装 native stack navigator library
    • 示例:导航到一个新的屏幕
  • Tab navigation
    • 范例
  • Drawer navigation
    • 范例
  • 总结

环境

条目版本
expo-cli4.10.0
React Navigation6.x
笔记日期2021年8月21日
  • react navigation 6.x官方文档
    https://reactnavigation.org/docs/getting-started/

  • expo官方文档
    https://docs.expo.dev/index.html

安装依赖

最近越来越喜欢yarn了,这里就使用yarn为例。

在 React Native 项目中安装所需的包:

yarn add @react-navigation/native

在expo中执行以下:

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

安装 native stack navigator library

yarn add @react-navigation/native-stack

示例:导航到一个新的屏幕

在这里插入图片描述

import * as React from 'react';
import { Button, View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';

function HomeScreen({ navigation }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Text>首页</Text>
      <Button
        title="详情页面"
        onPress={() => navigation.navigate('Details')}
      />
    </View>
  );
}

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

const Stack = createNativeStackNavigator();

function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName="Home">
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Details" component={DetailsScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

export default App;


Tab navigation

安装依赖

yarn add @react-navigation/bottom-tabs

范例

在这里插入图片描述

import * as React from 'react';
import { Text, View } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

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

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

const Tab = createBottomTabNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Tab.Navigator>
        <Tab.Screen name="Home" component={HomeScreen} />
        <Tab.Screen name="Settings" component={SettingsScreen} />
      </Tab.Navigator>
    </NavigationContainer>
  );
}

Drawer navigation

安装依赖

#有依赖关系
expo install react-native-reanimated
expo install react-native-gesture-handler
yarn add @react-navigation/drawer

范例

import * as React from 'react';
import { Button, View } from 'react-native';
import { createDrawerNavigator } from '@react-navigation/drawer';
import { NavigationContainer } from '@react-navigation/native';

function HomeScreen({ navigation }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button
        onPress={() => navigation.navigate('Notifications')}
        title="Go to notifications"
      />
    </View>
  );
}

function NotificationsScreen({ navigation }) {
  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button onPress={() => navigation.goBack()} title="Go back home" />
    </View>
  );
}

const Drawer = createDrawerNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Drawer.Navigator initialRouteName="Home">
        <Drawer.Screen name="Home" component={HomeScreen} />
        <Drawer.Screen name="Notifications" component={NotificationsScreen} />
      </Drawer.Navigator>
    </NavigationContainer>
  );
}

总结

我目前使用的功能,对比react navigation 5.x没感觉到明显的差别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

expo中使用react navigation 6.x笔记 的相关文章

随机推荐

  • Bad owner or permissions on ~/.ssh/config

    ssh运行报错如下 xff1a Bad owner or permissions on ssh config 解决办法 span class token function chmod span 600 ssh config 参考 https
  • java.lang.NoClassDefFoundError: org/owasp/encoder/Encode

    一个老的spring boot项目中使用到了shiro xff0c 存在安全漏洞 xff0c 由于源码丢失 xff0c 只好采用解压jar升级里面shiro的jar来解决了 但是升级以后遇到报错如下 报错信息 Caused by java
  • A VNC server is already running as :1

    现象 VNC服务使用 Centos7安装和配置VNC服务器 GNOME篇 https blog csdn net lxyoucan article details 113179208 中的配置方法 一开始服务都是正常的 xff0c 在我多次
  • CentOS7+IntellJ IDEA 中文输入问题

    心血来潮在CentOS7中搭建了java开发环境 xff0c 发现在IDEA中输入中文存在问题 中文输入法只能输入1到2个中文 xff0c 后面都是英文了 xff0c 那就想办法解决一下吧 xff01 环境 我的环境信息如下 xff1a 项
  • CentOS7安装CMakev3.21.0

    yum 安装的CMake版本是 2 8 12 2 xff0c 比较旧无法使用 那就来升级一下吧 cmake span class token keyword span CMake Error at CMakeLists txt 1 span
  • CentOS7+VNC+Openbox+Fcitx

    文章目录 简介VNCopenboxFcitx 实战环境信息安装与自动配置脚本创建用户开启 VNC服务 客户端连接VNC实现远程控制假如vnc中输入法切不出来参考 简介 VNC VNC xff08 Virtual Network Comput
  • vnc学习笔记合集

    文章目录 CentOS7 43 VNC 43 Openbox 43 FcitxCentOS中VNC常用命令Centos7安装和配置VNC服务器 GNOME篇Centos7安装和配置VNC服务器 Xfce篇Centos7安装和配置VNC服务器
  • linux_pwn(3)--Chunk Extend and Overlapping&&roarctf_2019_easy_pwn

    文章目录 What is Chunk Extend and Overlappingpwn题思路例题保护机制add函数show函数delete函数edit函数 开始做题准备框架调试覆盖后面一个块的大小释放堆块free验证机制尝试修改堆块开始泄
  • 2021CentOS7系统Gnome3桌面使用Fcitx

    前言 CentOS系统大多是用于服务器上 xff0c 当作桌面系统使用的比较少数了 就算偶而使用CentOS当作桌面系统使用 xff0c Gnome3桌面自带的输入法框架ibus简单使用已经够用了 最近在CentOS7当作桌面系统当临时开发
  • CentOS7安装搜狗输入法

    搜狗拼音输入法是2006年6月由搜狐公司推出的一款汉语拼音输入法 搜狗输入法从一开始偏向于词语输入特性 xff0c 发展到后来配备云输入功能的以整句输入为优势的输入法 xff0c 是中国大陆市场主流的汉语拼音输入法 根据极光大数据的 201
  • CentOS7一键安装搜狗输入法

    自动档 span class token function sh span c span class token string 34 span class token variable span class token variable s
  • CentOS7一键开启VNC服务脚本

    最近在研究舒适 xff0c 小巧 xff0c 好用的图形界面远程控制 输入法这块卡了我很久时间 xff0c 经过一周的努力 xff0c 查资料无数 xff0c 终于打造出一套可以令自己满意的远程方案了 我的工作中接触的远程Linux服务系统
  • shell用户输入数字加法操作

    用户输入2个数字进行加法操作 span class token builtin class name echo span span class token string 34 请输入数字1 34 span span class token
  • 浅谈linux文件权限

    权限介绍 访问权限 读取 xff08 r xff09 xff1a 允许查看文件内容 xff0c 显示目录列表写入 xff08 w xff09 xff1a 允许修改文件内容 xff0c 允许在目录中新建 删除 移动文件或者子目录可执行 xff
  • Linux实用脚本分享

    源码 xff1a https gitee com lxyoucan tools CentOS7专用脚本 因为我平时接触的大部分机器都是CentOS7 这里的脚本都是针对CentOS7开发的 虽然个人比较喜欢新的软件 xff0c 喜欢arch
  • react踩坑之函数名(){}与函数名=()=>{}的区别

    在React Component组件中 xff0c 函数不同的写法有什么区别 最近在看书 xff0c 照着写敲代码 xff0c 敲完后发现与书上效果不一样 找了很久才找到区别 打这个小坑记录下来 xff0c 这个应该新手比较容易犯的错 结论
  • chrome全屏

    有一些web网站可能当作单独的应用使用 如果全屏显示 xff0c 不显示地址栏 让更多的区域给应用呢 xff1f 首先说一下 xff0c 我用的是Macos系统 xff0c 其他系统的参数应该是类似的 MacOS MacOS配置别名 默认的
  • expo cli升级后无法iOS模拟器调试Request failed with status code 400

    国内expo的教程和文档相对比较少 xff0c 记录下过程方便一下遇到相同问题的朋友们 现象 expo初次安装使用正常 xff0c 当升级expo cli到最新版本后 xff0c 无法正常使用iOS模拟器调试了 开启调试报错如下 xff1a
  • docker-compose 巧妙使用

    一般做ctf题目 xff0c 有时候题目给了docker 一般 docker compose up build d d表示运行成果后进入后台 这个命令不仅帮我们build image xff0c 也帮我们run了个容器 docker com
  • expo中使用react navigation 6.x笔记

    新版本react navigation 6 x xff0c 与5 x有什么区别呢 xff1f 记个笔记吧 xff01 文章目录 环境安装依赖安装 native stack navigator library示例 xff1a 导航到一个新的屏