react native使用TS实现路由
一、入口文件app.jsx的配置
入口文件最好还是要保留jsx
import { NavigationContainer } from '@react-navigation/native';
import { navigationRef } from "./src/views/RootNavigation";const App = () => {return(<NavigationContainer ref={navigationRef}><StackRouter /></NavigationContainer>)
}
二、HomeScreen自定义你的tabbar导航
一般情况下项目里都是自定义的tababr,每个项目不一样,我这里就不过多展示
三、在应用的任何地方使用的导航功能
import { createNavigationContainerRef } from "@react-navigation/native";
export const navigationRef = createNavigationContainerRef();
export function navigate(name, params) {if (navigationRef.isReady()) {navigationRef.navigate(name, params);}
}
四、配置router.tsx和types.tsx
router.tsx
首先tababr页面可以用const的方式引入,其他页面可以用lazy的方式懒加载引入
核心代码
import { createNativeStackNavigator } from "@react-navigation/native-stack";const Stack = createNativeStackNavigator<RootStackParamList>();export default function StackRouter() {return (//示例<Stack.NavigatorinitialRouteName="HomeScreen"screenOptions={{ headerShown: false }}><Stack.Screen name="HomeScreen" component={HomeScreen} /></Stack.Navigator>
)}
types.tsx
核心代码
import { StackNavigationProp } from '@react-navigation/stack';
import { RouteProp } from '@react-navigation/native';export type RootStackParamList = {HomeScreen: undefined;Search: undefined;NpcMessage: undefined;Interactive: undefined;Example: { data: Array<string> }; //示例// 新添加的路由及其参数也应该在这里定义
};//需要用参数的时候需要导出一个 RouteProp
//需要用到页面跳转的时候,需要导出一个StackNavigationProp
//如果两者都需要,就需要导出两个
//import { useNavigation ,useRoute } from '@react-navigation/native'; 目标页面useNavigation是导航,useRoute是route//定义Interactive页面路由跳转
export type InteractiveNavigationProp = StackNavigationProp<RootStackParamList, 'Interactive'>;
export type InteractiveRouteProp = StackNavigationProp<RootStackParamList, 'Interactive'>;
// 定义Example页面的路由参数类型
export type ExampleRouteProp = RouteProp<RootStackParamList, 'Example'>;
// 更多类型定义...
五、页面中使用
import { useNavigation, useRoute } from '@react-navigation/native';
import { InteractiveNavigationProp,InteractiveRouteProp } from '../../router/types'const Interactive = () => {const navigation = useNavigation<InteractiveNavigationProp>();const router = useRoute<InteractiveRouteProp>}export default Interactive;
原本我们项目是js,由于最近在学TS,就在项目上慢慢局部引入TS,如果有问题或者建议,欢迎提问。
相关文章:
react native使用TS实现路由
一、入口文件app.jsx的配置 入口文件最好还是要保留jsx import { NavigationContainer } from react-navigation/native; import { navigationRef } from "./src/views/RootNavigation";const App () > {return(<NavigationContainer ref{navigat…...
手机充值的功能测试框架 - 测试要点
手机充值有微信营销活动的、有 APP 页面应用等,以下是我以前公司的手机充值话费或流量应用的测试要点,分享给大家参考下。 一、手机号码输入框检查 1、手机号码框要控制成只能输入11位数字的文本框。 2、输入以非1开头的手机号,给出提示&a…...
U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装
U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装 准备条件 准备一个U盘,建议容量至少为8GB,以便存放系统镜像文件 一台已经安装好操作系统的计算机,用于制作U盘启动盘 Ubuntu和CentOS的Linux ISO镜像文件。可以从官方网站或相关资源…...
Nodejs 第五十四章(net)
net模块是Node.js的核心模块之一,它提供了用于创建基于网络的应用程序的API。net模块主要用于创建TCP服务器和TCP客户端,以及处理网络通信。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,用于…...
渗透测试修复笔记 - 04 nacos 可能会导致未经授权的用户获取到系统中的敏感信息的漏洞
问题:该漏洞可能会导致未经授权的用户获取到系统中的敏感信息。 http://ip地址:8848/nacos/v1/auth/users?pageNo1&pageSize9 最直接的解决办法就是升级nacos版本 如果不升级的话还是沿用旧版本就修改相关配置 当前版本为2.0.4 1.nacos的docker-compose文件…...
初级代码游戏的专栏介绍与文章目录
我的github: codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 一、大型专题 1.1 C嵌入式HTTP服务器 C嵌入式HTTP服务器_初级代码游戏的博…...
【Redis系列】深入了解 Redis:一种高性能的内存数据库
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
C语言例:表达式(a=2,3),a+1的值
题目:设int a; 则表达式(a2,3),a1的值 #include<stdio.h> int main(void) {int a0;int b;int c;b (a2,4);c (a2,3),a1;printf("a1%d\n",a1); //a1 3;printf("a2,4的值为:%d\n",b); //a2,4的值为&…...
基于java的公寓报修管理系统设计与实现(程序+文档+数据库)
** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一、研究背景…...
Lua 函数前的冒号和点号,你知道他们的区别吗?
1. 函数前的冒号和点号 点号(.)和冒号(:)的区别主要在于是否自动处理self参数。 在Lua中,函数定义时前面有点号(.)和冒号(:)的区别主要体现在函数如何处理其第一个参数…...
4、设计模式之建造者模式(Builder)
一、什么是建造者模式 建造者模式是一种创建型设计模式,也叫生成器模式。 定义:封装一个复杂对象构造过程,并允许按步骤构造。 解释:就是将复杂对象的创建过程拆分成多个简单对象的创建过程,并将这些简单对象组合起来…...
网工内推 | 上市公司网工,IE认证优先,最高18K*13薪,包吃住
01 深圳市宝腾互联科技有限公司 招聘岗位:网络工程师 职责描述: 1、是整个数据中心的网络技术及安全问题的负责人,确保数据中心业务的正常进行; 2、负责规划、设计、搭建、维护数据中心的网络环境,确保IDC /云平台&a…...
SQL Server 技术100问?
这些问题旨在帮助SQL Server的管理员和开发人员深入理解数据库管理系统的核心概念和技术,从而更好地进行数据库设计、性能优化、安全管理等工作。 SQL Server的最新版本有哪些新特性?如何在SQL Server中创建一个新的数据库?如何在SQL Server…...
鸿蒙不再适合JS语言开发
ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、…...
Python环境搭建 -- Python与PyCharm安装
一、Python安装 我们先找到Python的官方网站,在浏览器中搜索Python即可,然后进入Python官网 点击Downloads,选择对应匹配的操作系统 点进去之后,Python的版本分为稳定的版本和前置版本,前置的版本就是还没有发行的版本…...
OSCP靶场--Astronaut
OSCP靶场–Astronaut 考点(1.CVE-2021-21425getshell 2.suid php提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -sV -sC -p- 192.168.163.12 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-14 01:24 EDT Nmap scan report for 192.16…...
Springboot 使用【过滤器】实现在请求到达 Controller 之前修改请求体参数和在结果返回之前修改响应体
文章目录 前情提要解决方案自定义 HttpServletRequest 包装类 RequestWrapper自定义 HttpServletResponse 包装类 ResponseWrapper自定义过滤器 MiddlewareFilter配置过滤器注解配置类 编写 Controller 测试 前情提要 在项目中需要使用过滤器 在请求调用 Controller 方法前修改…...
Unity 3D常用的数据结构
目录 数组使用场景 ArrayList数组ArrayList的缺点 List\<T\>数组List\<T\>有以下3点好处 链表链表与数组的不同之处链表的优势数组和链表的应用场景 LinkedList\<T\>C#中内置的双向链表LinkedList使用场景 队列(Queue\<T\>)和栈…...
h5唤起微信小程序
wx-open-launch-weapp 就用这个 开放标签属于自定义标签,Vue会给予未知标签的警告,可通过配置Vue.config.ignoredElements [wx-open-launch-weapp] 来忽略Vue对开放标签的检查。 sdk授权。 调试打开时iOS会弹窗 noPermissionJsApi: [],confi…...
面向对象(精髓)变继承关系为组和关系(_Decorator模式)
在软件开发中,设计模式是解决常见问题的可重用解决方案。在面向对象编程中,继承和组合是两种常用的代码复用方式。然而,随着软件需求的不断变化,我们需要更灵活的设计方式来应对不断变化的需求。在本文中,我们将讨论从…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...
从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...
