【笔记】React-Native Navigation页面导航

news2025/1/31 8:27:32
/**
* 须知:a bare React Native Project(not an Expo managed project)
* 
* React官方文档:https://reactnative.dev/docs/navigation
* 
* 当前文档基于6.x
* React Navigation文档:https://reactnavigation.org/docs/getting-started
* 
* "@react-navigation/native": "^6.1.9",
* "@react-navigation/native-stack": "^6.9.17",
* "react": "18.2.0",
* "react-native": "0.73.2",
* "react-native-safe-area-context": "^4.8.2",
* "react-native-screens": "^3.29.0"
*/

一、基本使用

1、首先要安装(npm install 或 yarn add)

yarn add @react-navigation/native @react-navigation/native-stack

2、需要结合适配android/IOS设备屏幕的依赖才可以使用

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

3、现在开始改造默认的App.tsx(新建两个组件:Home.tsx页面内容是原来的App.tsx稍微做修改、AboutUs.tsx)

import * as React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createNativeStackNavigator } from '@react-navigation/native-stack';
import { View } from 'react-native';
import Home from './src/views/Home';
import AboutUs from './src/views/AboutUs';

const Stack = createNativeStackNavigator()

const App = () => {
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName='Home'>
        <Stack.Screen
        name='Home'
        component={Home}
        options={{title: 'Hi!Mortal'}} />
        <Stack.Screen name="AboutUs" component={AboutUs} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

export default App;

2、当前是用安卓设备测试,所以按照官方文档还需要在MainActivity.kt重写onCreate方法

3、在Home.tsx组件中导航到AboutUs.tsx

如果出现错误提示,可以正常运行,但还是要统一严格使用TypeScript(暂时不用太关心navigation的来源)

方式1

方式2

可以将navigation打印出来看有哪些函数可以调用,满多API供我们调用

{"addListener": [Function addListener], "canGoBack": [Function canGoBack], "dispatch": [Function dispatch], "getId": [Function getId], "getParent": [Function getParent], "getState": [Function anonymous], "goBack": [Function anonymous], "isFocused": [Function isFocused], "navigate": [Function anonymous], "pop": [Function anonymous], "popToTop": [Function anonymous], "push": [Function anonymous], "removeListener": [Function removeListener], "replace": [Function anonymous], "reset": [Function anonymous], "setOptions": [Function setOptions], "setParams": [Function anonymous]}

加个跳转入口

到此基本的路由跳转已经完成(navigation.push、navigation.goBack、navigation.popToTop基础用法待研究)

二、页面传参数

1、可以在App.tsx里定义initialParams的类型或者不定义,这个视情况而定

2、Home.tsx里重新对navigation定义类型(这里定义了严格的类型),因为之前是any类型,所以调用是这样的navigation?.navigate(xxx)

这里只是额外多了showAppVersion、otherParams两个字段,那App.tsx里的initialParams有什么用呢?

3、接受页面传参,是用route去取值的

到这里已经完成了基础的工作准备,现在可以打印出来看route携带了哪些信息,params里可以看到多了theme字段,没错这个就是之前定义的initialParams,所以视情况而定,比如每个页面都需要相同的数据源时。

{
	"key": "AboutUs-nb2KVya6DJRe_JfecBAR8",
	"name": "AboutUs",
	"params": {
		"otherParams": "Good Good Study! Day Day Up!",
		"showAppVersion": true,
		"theme": "dark"
	},
	"path": undefined
}

4、最后贴一张效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1426787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ Webserver从零开始:基础知识(七)——多进程编程

前言 在学习操作系统时&#xff0c;我们知道现代计算机往往都是多进程多线程的&#xff0c;多进程和多线程技术能大大提高了CPU的利用率&#xff0c;因此在web服务器的设计中&#xff0c;不可避免地要涉及到多进程多线程技术。 这一章将简要讲解web服务器中的多进程编程&#x…

AI与数字孪生

源自&#xff1a;译文 “人工智能技术与咨询”发布 AI和数字孪生 预测分析&#xff1a;网络安全水晶球 面对不断变化的威胁&#xff0c;提供自适应安全防护 自然语言处理&#xff1a;解码威胁语言 先进技术&#xff1a;人工智能作为数字孪生安全的基础 道德考量 …

关于v8垃圾回收机制以及与其相关联的知识点--还没整理版本

对于值类型b来说&#xff0c;就直接释放了其占用的内存&#xff0c;对于引用类型obj来说&#xff0c;销毁的只是变量obj对堆内存地址 1001 的引用&#xff0c;obj的值 { c: 3 } 依然存在于堆内存中。那么堆内存中的变量如何进行回收呢&#xff1f; V8的垃圾回收策略主要是基于…

git将项目的某次签入遴选(Cherry-Pick)另一个项目

需求&#xff1a;将项目Product&#xff0c;分支feature/platform&#xff0c;签入959294ce6b75ee48c5cb22c46d7398654628a896&#xff0c;遴选到项目BRP&#xff0c;分支dev 第一步&#xff1a;使用原签入生成patch文件&#xff08;git format-patch -1 <commit_hash>&a…

西部数据DX4000数据恢复案例

西部数据DX4000是一款NAS&#xff08;网络附加存储&#xff09;产品&#xff0c;它集成了存储、备份、共享和远程访问企业数据等多种功能。然而&#xff0c;和任何电子设备存在一样通病&#xff0c;DX4000也可能会出现故障&#xff0c;导致数据无法访问。下面是一个客户的西部数…

Python OpenCV实现图片像素区域缩放

Python OpenCV实现图片像素区域缩放 前言项目安装OpenCV和Pillow思路代码编写 前言 遇到一个要将大量图片缩放成统一规格的难题&#xff0c;并且这些图片周围还有很多空白像素&#xff0c;所以用Python实现一下。 项目 安装OpenCV和Pillow pip install opencv-python pip …

基于YOLOv8的水下生物检测,多种优化方法---DCNv4结合SPPF,效果秒杀DCNv3,涨点两个点(四)

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文主要内容:详细介绍了水下生物检测整个过程&#xff0c;从数据集到训练模型到结果可视化分析&#xff0c;以及如何优化提升检测性能。 &#x1f4a1;&#x1f4a1;&#x1f4a1;加入DCNv4_SPPF mAP0.5由原始的0.522提升至0.543 1.水…

7.3、向量空间的简要回顾

7.3、向量空间的简要回顾 ​ 在开始讨论格之前&#xff0c;我们先提醒读者注意线性代数中的一些重要定义和思想。向量空间的定义可以非常宽泛&#xff0c;但就本章而言&#xff0c;我们只需考虑对于某个正整数 m&#xff0c;包含在 R m R^{m} Rm中的向量空间即可。 ​ 我们从…

[职场] 阐述演员这个职业 #微信#学习方法#媒体

阐述演员这个职业 演员这个职业是一种极具挑战性和魅力的职业&#xff0c;它让人们有机会通过表演来展现自己&#xff0c;将自身的才华和潜力发挥到极致。 1. 演员需要具备扎实的专业素养&#xff0c;包括表演技巧、语言技巧、心理技巧等。演员需要深入理解角色&#xff0c;从…

大数据 - Spark系列《一》- 分区 partition数目设置详解

目录 &#x1f436;3.2.1 分区过程 &#x1f436;3.2.2 SplitSize计算和分区个数计算 &#x1f436;3.2.3 Partition的数目设置 1. &#x1f959;对于数据读入阶段&#xff0c;输入文件被划分为多少个InputSplit就会需要多少初始task. 2. &#x1f959;对于转换算子产生的…

【Bugs】Jmeter报错:NoSuchMethodError: org.apache.jmeter.samplers.

报错情况 Jmeter版本&#xff1a;5.4.3 报错场景&#xff1a;在线程组中添加了jpgc - PerfMon Metrics Collector性能监控组件后出现报错。 Jmeter中无法运行测试&#xff0c;cmd命令行中出现以下报错。 cmd报错详细内容&#xff1a; Uncaught Exception java.lang.NoSuchMe…

如何系统的自学Python?通义千问、讯飞星火、文心一言及ChatGPT的回答

如何系统的自学Python&#xff1f;来看看通义千问、讯飞星火、文心一言及ChatGPT的回答. 第一个是马老师的通义千问 系统地自学Python是一个循序渐进的过程&#xff0c;从基础语法到实践项目&#xff0c;再到专业领域的深入学习。下面是一个详细的步骤指南&#xff1a; 了解Py…

Qt5 基于OpenGL实现六轴机械臂三维仿真

需求 在Qt中通过OPenGL方式加载三维模型STL文件&#xff0c;然后将多个结构的STL文件类型的模型进行组装&#xff0c;形成6轴机械臂三维模型的显示&#xff0c;并且可以对每个关节进行关节角度的控制。 新建一个C类STLFileLoader&#xff0c;用于加载STL文件&#xff0c;并进…

电口模块的应用:实现高速网络通信

随着互联网的普及和信息时代的到来&#xff0c;网络通信已经成为了现代社会中不可或缺的一部分。电口模块作为网络通信中的重要组成部分&#xff0c;其应用也越来越广泛。在本文中&#xff0c;我们将详细介绍电口模块的优势以及应用领域。 首先&#xff0c;电口模块具有高速传…

JavaScript 与Java什么关系?为什么名字中带有Java?

JavaScript与Java关系 JavaScript和Java是两种不同的编程语言&#xff0c;它们之间没有直接关系。尽管它们都以“Java”命名&#xff0c;但是它们的语法、用途和应用场景都不同。 Java是一种面向对象的、静态类型的编程语言&#xff0c;主要用于开发独立应用程序、网络应用、…

unity 拖入文件 窗口大小

目录 unity 拖入文件插件 设置窗口大小 unity 拖入文件插件 GitHub - Bunny83/UnityWindowsFileDrag-Drop: Adds file drag and drop support for Unity standalong builds on windows. 设置窗口大小 file build

golang Cannot assign a value to the unexported field ‘xxxxx‘

最近学习golang&#xff0c;结果发现参考github的代码报错了 查了一下资料&#xff0c;这里记录加吐槽一下&#xff0c;这个设定真的让我感觉痛苦 go 实例化结构体报错 Cannot assign a value to the unexported field xxxxx 或者是报错implicit assignment of unexported fiel…

计算机系统体系结构

文章目录 计算机系统体系结构1. 什么是计算机体系结构术语解释计算机系统体系结构所涉及的内容简单通用计算机结构计算机指令程序执行过程时钟 2. 计算机的发展机械计算机机电式计算机早期电子计算机微机和PC革命移动计算和云计算摩尔定律乱序执行 3. 存储程序计算机寄存器传输…

qt学习:停车场管理系统+摄像头+http识别车牌+sqlite3数据库

目录 参考前面发的几篇文章http识别车牌&#xff0c;sqlite3数据库、摄像头的文章 步骤 部分代码 新建一个项目&#xff0c;加入前面用到的http和image两个文件&#xff0c;和加入用到的模块和头函数和成员&#xff0c;加入前面用到的全局变量 配置ui界面 在构造函数中初…

sql指南之null值用法

注明&#xff1a;参考文章&#xff1a; SQL避坑指南之NULL值知多少&#xff1f;_select null as-CSDN博客文章浏览阅读2.9k次&#xff0c;点赞7次&#xff0c;收藏21次。0 引言 SQL NULL&#xff08;UNKNOW&#xff09;是用来代表缺失值的术语&#xff0c;在表中的NULL值是显示…