React useRequest解读

news/2024/11/29 10:48:56/

源码结构:

可以看到虽然是一个hooks(具有一定功能且具备状态的单一函数) 但是各种文件功能分得也是很细的,方便抽离和复用

useRequest.ts

抽离的原则还是单一功能原则

可以看出 真正的hooks实现是在Implement里

对于类型type的引入 我们需要显示声明这是import type

useRequestImplement.ts

入参:

不明确类型的参数都可以用泛型占位定义  泛型可以用在interface/type/class/fn作为参数传入

出参:

学习体会:

从useRequest源码中我们可以学到哪些东西?

1.非常清晰的功能划分,比如纯入口文件,很明确的参数配置(useRequest.ts)只有入参和出参

2.各个功能都单独抽离成了Plugin并结合各种钩子函数处理数据和返回数据

3.很巧妙是使用了setState({})来手动刷新视图

4.借助了后台AOP切面思想设计onBefore等生命周期函数来变更请求状态,处理请求前和请求后数据

5.借助class类来承载各种属性和方法 并通过state和setState来串联模拟class的响应式。尤其是状态的更新

6.充分利用了函数式组件的生命周期特征来实现具体逻辑 并借助useEffect,useMemo来模拟组件生命周期

最终返回类似Hooks的类


http://www.ppmy.cn/news/1129267.html

相关文章

C#并发编程的实现方式

一、多线程:是一种并发编程技术,它允许一个应用程序同时执行多个线程。每个线程都有自己的指令集和堆栈,可以在不同的CPU核心上并行运行,或者在一个CPU核心上通过时间片轮转的方式交替运行。多线程的主要优点是可以利用多核处理器…

Python数据和Json数据的相互转换

什么是JSON? JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据 JSON本质上是一个带有特定格式的字符串 主要功能:JSON就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互 Python数据和Json数据的相互…

面试问到MySQL模块划分与架构体系怎么办

面试问到Mysql模块划分与架构体系怎么办 文章目录 1. 应用层连接管理器(Connection Manager)安全性和权限模块(Security and Privilege Module) 2. MySQL服务器层2.1. 服务支持和工具集2.2. SQL Interface2.3. 解析器举个解析器 …

MATLAB算法实战应用案例精讲-【优化算法】基于房地产市场的优化算法(REMARK)(附MATLAB代码实现)

代码实现 MATLAB main.m clc, clear rng(shuffle) format short e options.nDim = 2; options.nDemander = 80; options.nSupplier = ceil(options.nDemander/4); options.maxFrnd = ceil(options.nDemander/4); options.constrPer = 10; options.KsigmaD = 0.7; options.Ks…

docker-compose 网络配置- IP 主机名 hosts配置

docker-compose 配置IP、hostname、hosts配置 配置IP version: "3" networks:bd-network: # 声明网络external: true services:kafka: # 服务名称networks:bd-network: # 连接的网络名称ipv4_address: 172.2.0.102 # 配置IP配置 主机名 version: "3&quo…

嵌入式Linux应用开发-第七章-野火-正点原子IMX6ULL的LED驱动程序

嵌入式Linux应用开发-第七章-野火-正点原子IMX6ULL的LED驱动程序 野火IMX6ULL的LED驱动程序7.4 野火/正点原子 IMX6ULL的 LED驱动程序7.4.1 原理图7.4.1.1 野火 fire_imx6ull-pro开发板7.4.1.2 正点原子 Atk_imx6ull-alpha开发板 7.4.2 所涉及的寄存器操作7.4.2.1 野火 fire_im…

【MySQL】SQL优化、char、varchar、外键约束、排查慢sql等重点知识汇总

目录 SQL语句 char和varchar比较 SQL语句如何优化 说一下你理解的外键约束 如何排查慢 sql SQL语句 对库操作 创建数据库 create database 数据库名 删除数据库 drop database 数据库名 显示所有数据库 show databases 选中数据库 use 数据库名 对表操作 创建表…

辅助驾驶功能开发-功能对标篇(9)-NOA领航辅助系统-北汽极狐

1.横向对标参数 厂商北汽极狐车型阿尔法S 华为HI版上市时间2022方案13V6R1L+1DMS摄像头前视摄像头4*(双目+长焦+广角)侧视摄像头4后视摄像头1环视摄像头4DMS摄像头1雷达毫米波雷达6*(前+后+四角)4D毫米波雷达/超声波雷达12激光雷达3*(华为96线,905nm)域控供应商1*(华为MDC810)辅…