React useRequest解读

2023-09-21 20:22:46

源码结构:

可以看到虽然是一个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的类

更多推荐

Python vs C#:首先学习哪种编程语言最好?

进入编码可能很困难。最艰难的部分?决定先学什么语言。当谈到Python与C#时,可能很难知道在您的决定中要考虑哪些因素。我们为您提供了有关这些全明星编程语言的所有信息。什么是C#?自2000年作为MicrosoftVisualStudio的一部分开发C#以来,它一直是开发人员(包括新编码人员)的最爱。它标志着技术的一个

JAVA设计模式6:代理模式,用于控制对目标对象的访问

作者主页:Designer小郑作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,阿里云社区专家博主,蓝桥云课讲师。目录一、什么是代理模式二、代理模式实例2.1静态代理2.2动态代理三、代理模式的应用场景四、代理模式面试题一、什么是代理模式代理模式是一种常用

【算法训练-二叉树 四】【对称与翻转】对称二叉树、翻转二叉树

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【二叉树的形态变化】,使用【二叉树】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为:目标公司+最近一年+出现频率排序,由高到低的去牛客TOP101去找,只有两个地方都出现过才做这道题(CodeTop本身汇聚了L

OPCAE扫盲

目录1基本概念1.1服务器/客户端1.2区域1.3报警/条件1.4事件2条件概念2.1子条件2.2OPCConditions属性2.3Condition质量2.4OPCSubConditions属性2.5Condition定义2.6严重性2.7Condition启用/禁用2.8Area启用/禁用2.9Condition

服务器托管费用包含什么?

服务器托管和服务器租用是有一定区别的,那么服务器托管多少钱一年呢?今天就让小编来讲一讲服务器托管费用包含什么吧?服务器的机柜费。因为是服务器托管,所以不需要IDC服务器商提供服务器,只需要给自己的服务器付租用机柜的费用。通常是1U、2U、4U、半柜、整柜几种租用尺寸。(注:1U=4.445厘米,2U=8.89厘米,以此

Aztec交易架构解析

1.引言前序博客有:Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私完全保密的以太坊交易:Aztec网络的隐私架构Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能AccountAbstraction账号抽象——EIP-4337提案Aztec团队认为:隐私用户体验糟透了。

深入解读什么是期权的内在价值和时间价值?

期权品种越来越丰富,对于大家套利对冲都有很多的选择。而有些初学者对时间价值一直不理解,今天呢,就给大家讲一讲深入解读什么是期权的内在价值和时间价值?本文来自:期权酱01在期权交易过程中,想必大家都会有以下几点疑惑:❑我看对行情了,为什么行情上涨或者下跌。认沽和认购都不赚钱?❑什么是期权的内在价值和时间价值?❑一旦被套,

HTTP网络协议与接口测试逻辑

很多测试人员都做过接口测试,但是聊到接口还是会不太清楚。网络协议:但凡要做接口测试,一定要懂网络协议。目前市场主流的网络协议HTTP1.1,Dubbo2,HTTP2.O(相对较少)HTTP1.1网络协议:搞懂打开浏览器访问一个URL会经历的步骤有哪些?(也就是搞懂了HTTP网络协议的基本交互流程)解析URL,将域名解析

性能测试 —— Jmeter 常用三种定时器

1、同步定时器位置:HTTP请求->定时器->SynchronizingTimer当需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用户阻塞线程,知道线程数达到预先配置的数值,才开始执行取样器的操作测试绝对并发,比如秒杀,抢购等场景,结果要用聚合报告查看简单案例:模拟50个用户同时访问百度线程

JMeter 测试脚本编写技巧

是一款开源软件,用于进行负载测试、性能测试及功能测试。测试人员可以使用JMeter编写测试脚本,模拟多种不同的负载情况,从而评估系统的性能和稳定性。以下是编写JMeter测试脚本的步骤。第1步:创建测试计划在JMeter中,测试计划是测试的最高级别,它包含了各种元素和配置,如线程组、断言、监听器等。测试人员需要在JMe

2种方法,jmeter用一个正则提取器提取多个值!

jmeter中,用json提取器,一次提取多个值,这个很多人都会。但是,用正则提取器一次提取多个,是否可以呢?肯定,很多人都自信满满的说,可以!形如:token":“(.?)“,“identity”:”(.?)”写一个这样的正则表达式,不就是可以提取两个了吗!是的,这种做法没有错,但是,你发现一个问题吗?你的“Name

热文推荐