当前位置: 首页 > news >正文

封装一个请求的hook(react函数组件)

对于后台系统,上面筛选,下面表格分页的页面,这个hook非常实用
omitBy方法:过滤不为undefined的对象属性

export const omitBy = <T extends IObject, K extends keyof T>(object:T, predicate:(value:T[K]) => boolean):IObject => {if (typeof object !== 'object') {return object;}const newObject:IObject = {};Object.keys(object).forEach((item) => {if (predicate(object[item])) {newObject[item] = object[item];}});return newObject;
};
export const useFetchHook = (fetchPromiseFunc:(params?:any) => Promise<any>, params?:any, initialData?:any, deps?:ReadonlyArray<any>, fetchFlag?:boolean) => {const [data, setData] = useState(initialData);const [loading, setLoading] = useState(false);console.log('重新执行了该hook');// 处理对象参数:当value为空时,omit该参数const formattedParams = omitBy(params, (item) => item !== undefined );useEffect(() => {const fetchData = async() => {try {setLoading && setLoading(true);const result = await fetchPromiseFunc(formattedParams);if (result.status.toString() !== '200') {if(result.data.error_code) {//todo sth...} else if(result.data.statusText){message.error(result.data.statusText);} else if(result.data.msg) {message.error(result.data.msg || '接口异常');}} else {setData(result.data);}setLoading && setLoading(false);} catch (error) {setLoading && setLoading(false);}};if(fetchFlag === undefined || fetchFlag) {fetchData();}else {setData(initialData);}}, deps ? deps : []);return [data, loading];
};

使用

const [classData, loading] = useFetchHook(yourFetchFunc, { ...filterParams, ...paginationParams }, [], [filterParams, paginationParams, filterFlag]);

filterParams: 用在筛选条件
paginationParams:分页筛选
filterFlag:其他自定义筛选

相关文章:

封装一个请求的hook(react函数组件)

对于后台系统&#xff0c;上面筛选&#xff0c;下面表格分页的页面&#xff0c;这个hook非常实用 omitBy方法&#xff1a;过滤不为undefined的对象属性 export const omitBy <T extends IObject, K extends keyof T>(object:T, predicate:(value:T[K]) > boolean):I…...

c语言内存块讲解

文章目录 前言一、栈区1、栈区的特点&#xff1a;1.1 自动管理1.2 后进先出1.3 有限大小1.4 高速访问1.5 栈区存储方向 2、栈区使用注意事项 二、堆区1、堆区的定义2、堆区的特点3、堆区的内存分配与释放4、注意事项&#xff1a; 三、全局/静态存储区1、全局存储区1.1 全局变量…...

2024年10月23日Github流行趋势

项目名称&#xff1a;hiteshchoudhary / apihub 项目维护者&#xff1a;wajeshubham, atulbhatt-system32, jwala-anirudh, arnb-smnta, shrey-dadhaniya 项目介绍&#xff1a;您自己的API Hub&#xff0c;用于学习和掌握API交互。非常适合前端、移动开发人员和后端开发人员。 …...

YOLOv6-4.0部分代码阅读笔记-dbb_transforms.py

dbb_transforms.py yolov6\layers\dbb_transforms.py 目录 dbb_transforms.py 1.所需的库和模块 2.def transI_fusebn(kernel, bn): 3.def transII_addbranch(kernels, biases): 4.def transIII_1x1_kxk(k1, b1, k2, b2, groups): 5.def transIV_depthconcat(kernel…...

C++ 基础语法 一

C 基础语法 一 文章目录 C 基础语法 一const 限定符常量指针类型别名autodecltypeQStringvector迭代器指针和数组显示转换static_castconst_cast 函数尽量使用常量引用数组形参不要返回局部对象的引用和指针返回数组指针 C四种转换内联函数constexpr函数函数指针 const 限定符 …...

B2020 分糖果

题目描述 某个幼儿园里&#xff0c;有 55 位小朋友编号依次为 1,2,3,4,51,2,3,4,5 他们按照自己的编号顺序围坐在一张圆桌旁。他们身上有若干糖果&#xff0c;现在他们玩一个分糖果游戏。从 11 号小朋友开始&#xff0c;将自己的糖果均分成 33 份&#xff08;如果有多余的糖果…...

VBA字典与数组第二十讲:如何在代码运行时创建数组

《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;字典是VBA的精华&#xff0c;我要求学员必学。7.1.3.9教程和手册掌握后&#xff0c;可以解决大多数工作中遇到的实际问题。…...

字符串统计(Python)

接收键盘任意录入&#xff0c;分别统计大小写字母、数字及其它字符数量&#xff0c;打印输出。 (笔记模板由python脚本于2024年11月02日 08:23:31创建&#xff0c;本篇笔记适合熟悉python字符串并懂得基本编程技法的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xf…...

NVR小程序接入平台/设备EasyNVR多个NVR同时管理视频监控新选择

在数字化转型的浪潮中&#xff0c;视频监控作为安防领域的核心组成部分&#xff0c;正经历着前所未有的技术革新。随着技术的不断进步和应用场景的不断拓展&#xff0c;视频监控系统的兼容性、稳定性以及安全性成为了用户关注的焦点。NVR小程序接入平台/设备EasyNVR&#xff0c…...

怎样能把图片做压缩处理?学会4款在线工具高效压缩图片

随着现在图片质量不断的提高&#xff0c;导致图片的大小也越来越大&#xff0c;很多的网上平台只能上传比较小的图片&#xff0c;那么可以使用压缩图片或者图片改尺寸的方式来修改图片大小&#xff0c;那么图片压缩的操作技巧是什么样的呢&#xff1f;本文将带大家了解4个操作简…...

ZooKeeper 客户端API操作

文章目录 一、节点信息1、创建节点2、获取子节点并监听节点变化3、判断节点是否存在4、客户端向服务端写入数据写入请求直接发给 Leader 节点写入请求直接发给 follow 节点 二、服务器动态上下线监听1、监听过程2、代码 三、分布式锁1、什么是分布式锁?2、Curator 框架实现分布…...

常用滤波算法(一)-限幅滤波法

文章目录 一、限幅滤波法原理二、C语言实现限幅滤波法三、代码解析定义限制值&#xff1a;限幅滤波函数&#xff1a;模拟获取新数据&#xff1a;主函数&#xff1a; 四、结论 限幅滤波法 限幅滤波法&#xff0c;作为一种简单而有效的滤波方法&#xff0c;通过限制信号的幅值范围…...

江协科技STM32学习- P33 实验-软件I2C读写MPU6050

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…...

BusHound工具的使用-调试USB

12 1.Capture(捕捉按钮)、2.Save(保存按钮)、3.Setting(设置要监听的&#xff0c;输入输出)、4.Device(选择要监听的设备)、5.Help(帮助按钮)、6.Exit(退出按钮)。 一、Capture页面 1.Device 表示是29设备端口&#xff0c;打印机。 2.Phase&#xff0c;各类协议&#xff0c…...

Hadoop生态圈框架部署(四)- Hadoop完全分布式部署

文章目录 前言一、Hadoop完全分布式部署&#xff08;手动部署&#xff09;1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 hdfs-site…...

Spring Boot 与 Vue 共铸卓越采购管理新平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…...

leetcode3. Longest Substring Without Repeating Characters

Given a string s, find the length of the longest substring without repeating characters. Example 1: Input: s “abcabcbb” Output: 3 Explanation: The answer is “abc”, with the length of 3. Example 2: Input: s “bbbbb” Output: 1 Explanation: The ans…...

Mongodb使用视图连接两个集合

您可以使用 $lookup 为两个集合创建一个视图&#xff0c;然后对该视图运行查询。应用程序可以查询视图&#xff0c;而无需构建或维护复杂的管道。 例子 创建两个样本集合 inventory 和 orders&#xff1a; db.inventory.insertMany( [{ prodId: 100, price: 20, quantity: 1…...

SIP是什么?

SIP&#xff08;Session Initiation Protocol&#xff0c;会话启动协议&#xff09;是一个用于建立、更改和终止多媒体会话的应用层控制协议&#xff0c;其中的会话可以是IP电话、多媒体会话或多媒体会议。 SIP是IETF多媒体数据和控制体系结构的核心协议&#xff08;最新RFC文档…...

Day 39 || 01背包、416. 分割等和子集

01背包 题目链接&#xff1a;卡码网第46题 二维解题思路&#xff1a;需要建立一个i行k列的dp数组&#xff0c;i表示每个物品&#xff0c;k代表容量&#xff0c;初始化数组子一列为0&#xff0c;第一行从背包开始能够放入起始为价值&#xff0c;其他都为0。for双循环先背包后物…...

# 从底层架构到应用实践:为何部分大模型在越狱攻击下失守?

从底层架构到应用实践&#xff1a;为何部分大模型在越狱攻击下失守&#xff1f; 引言 近期&#xff0c;我们对多个主流大语言模型&#xff08;LLM&#xff09;进行了安全性测试&#xff0c;使用了极具诱导性的越狱提示词&#xff0c;试图绕过其内容安全机制。测试结果显示&am…...

黑马Java面试笔记之 微服务篇(SpringCloud)

一. SpringCloud 5大组件 SpringCloud 5大组件有哪些&#xff1f; 总结 五大件分别有&#xff1a; Eureka&#xff1a;注册中心Ribbon&#xff1a;负载均衡Feign&#xff1a;远程调用Hystrix&#xff1a;服务熔断Zuul/Gateway&#xff1a;网关 如果项目用到了阿里巴巴&#xff…...

Github 2025-06-06 Java开源项目日报Top10

根据Github Trendings的统计,今日(2025-06-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目10TypeScript项目1Java实现的算法集合:使用Gitpod.io进行编辑和贡献 创建周期:2883 天开发语言:Java协议类型:MIT LicenseStar数量…...

【拓扑剪枝+深搜剪枝/计数】2024睿抗-章鱼图的判断

题目描述 对于无向图 G ( V , E ) G(V,E) G(V,E)&#xff0c;我们将有且只有一个环的、大于 2 2 2 个顶点的无向连通图称之为章鱼图&#xff0c;因为其形状像是一个环&#xff08;身体&#xff09;带着若干个树&#xff08;触手&#xff09;&#xff0c;故得名。 给定一个…...

数字证书_CA_详解

目录 一、数字证书简介 二、 CA&#xff08;证书颁发机构&#xff09; (一) 证书链&#xff08;信任链&#xff09; 1. 根证书 2. 中间证书 3. 网站证书 (二) 抓包软件的证书链与信任机制 1. 抓包通信流程 2. 证书链伪造与信任验证流程 (三) 关于移动设备的CA 一、数…...

【JVM】Java虚拟机(一)——内存结构

目录 一、简介 二、程序计数器 三、虚拟机栈 栈帧结构&#xff1a; 特点&#xff1a; 四、本地方法栈 特点&#xff1a; 五、堆 堆结构&#xff1a; 特点&#xff1a; 对象分配过程&#xff1a; 六、方法区 方法区结构&#xff1a; 特点&#xff1a; 运行时常量池…...

JavaScript性能优化实战:从核心原理到工程实践的全流程解析

下面我给出一个较为系统和深入的解析&#xff0c;帮助你理解和实践“JavaScript 性能优化实战&#xff1a;从核心原理到工程实践的全流程解析”。下面的内容不仅解释了底层原理&#xff0c;也结合实际工程中的最佳模式和工具&#xff0c;帮助你在项目中贯彻性能优化理念&#x…...

gvim比较两个文件不同并合并差异

使用 gvim 比较两个文件的不同&#xff1a; 方式一&#xff0c;使用 gvim 同时打开两个待比较的文件。 比较通用方式是采用 gvim -d 选项&#xff0c;具体命令&#xff0c;如下&#xff1a; gvim -d <file1> <file2>方式二&#xff0c;先用 gvim 打开一个文件&am…...

具备强大的数据处理和分析能力的智慧地产开源了

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。 AI是新形势下数…...

NumPy 比较、掩码与布尔逻辑

文章目录 比较、掩码与布尔逻辑示例&#xff1a;统计下雨天数作为通用函数&#xff08;Ufuncs&#xff09;的比较运算符使用布尔数组计数条目布尔运算符 布尔数组作为掩码使用关键字 and/or 与运算符 &/| 的区别 比较、掩码与布尔逻辑 本文介绍如何使用布尔掩码来检查和操…...