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

WHAT - ahooks vs swr 请求

文章目录

  • ahooks
    • 特点
    • 常用 Hooks 示例
      • 1. useRequest — 封装网络请求逻辑(比 SWR / React Query 更轻量)
      • 2. useDebounce — 防抖值
      • 3. useLocalStorageState — 本地存储的状态
      • 4. useBoolean — 快速管理布尔状态
      • 5. useEventListener — 添加事件监听
  • ahooks useRequest vs swr
    • 核心区别概览
    • 使用场景建议
      • 使用 ahooks
      • 使用 SWR
    • 项目中二者能否共存?

ahooks

ahooks 是由阿里巴巴团队推出的一个 React Hooks 库,提供了大量经过封装的、可复用的 Hooks,旨在提高 React 开发效率。它基于 react-hooks 的设计理念,提供了更丰富、实用的功能集合。

特点

  • 丰富:提供了网络请求、状态管理、事件监听、DOM 操作等多个领域的 Hooks。
  • 高性能:部分 Hooks 内部做了节流、防抖、缓存等性能优化。
  • 易用性强:API 简洁、文档完善,支持 TypeScript。
  • 适配 SSR、React Native。

常用 Hooks 示例

1. useRequest — 封装网络请求逻辑(比 SWR / React Query 更轻量)

import { useRequest } from 'ahooks';const { data, error, loading } = useRequest(() => fetch('/api/user').then(res => res.json()));

2. useDebounce — 防抖值

const debouncedValue = useDebounce(searchValue, { wait: 500 });

3. useLocalStorageState — 本地存储的状态

const [value, setValue] = useLocalStorageState('key', { defaultValue: 'hello' });

4. useBoolean — 快速管理布尔状态

const [state, { setTrue, setFalse, toggle }] = useBoolean();

5. useEventListener — 添加事件监听

useEventListener('resize', () => {console.log('window resized');
}, { target: window });

ahooks useRequest vs swr

在 WHAT - React 请求方案之 SWR(stale-while-revalidate) 我们已介绍过 swr 请求方案。

这里主要介绍 ahooks useRequest 及其与 swr 的差别。

ahooksSWR 都是 React 生态中非常流行的工具库,但它们的关注点不同:

核心区别概览

特性ahooksSWR
定位多功能 React Hooks 工具库(全场景)专注于数据获取(HTTP 请求)的状态管理工具
主要功能网络请求、状态管理、DOM 操作、生命周期处理等高效、缓存优先的数据请求处理(远程请求)
数据请求功能useRequest 提供类似 SWR 的功能核心就是数据请求(远强于 ahooks 的请求功能)
缓存/自动刷新等支持(useRequest 内部封装了缓存/轮询/防抖等)更深入:全局缓存、自动刷新、revalidate 等机制
SSR 支持部分支持内建良好支持
学习成本低(各种功能按需用)中等(主打请求管理,但可配置项较多)
体积/依赖性全能型库,较大单一职责,体积更小

使用场景建议

使用 ahooks

  • 需要使用多种 Hook 功能(如节流、防抖、本地存储、倒计时等);
  • 想快速集成数据请求 + 其他功能;
  • 你更偏好一个多合一的工具库
  • 项目不太依赖复杂的数据缓存场景。

使用 SWR

  • 项目主要依赖数据请求管理
  • 需要高级功能:缓存同步、自动刷新、预取、分页、离线支持
  • 和 Next.js 搭配 SSR 用;
  • 想对数据请求有更精细的控制(如乐观更新、mutate 等);

项目中二者能否共存?

可以,常见用法是:

  • ahooks 管理本地状态、事件处理、实用工具等;
  • SWR 专注处理远程数据请求和缓存管理;
http://www.xdnf.cn/news/342451.html

相关文章:

  • Qt获取CPU使用率及内存占用大小
  • 基于STM32、HAL库的CP2104 USB转UART收发器 驱动程序设计
  • Node.js 技术原理分析系列9——Node.js addon一文通
  • 【嵌入式面试高频知识点】-wifi相关
  • 钯铂贵金属分离回收树脂
  • 【写作格式】写论文时常见格式问题
  • sherpa-ncnn:Endpointing(断句规则)
  • 05_项目集成飞书预警
  • 浙大与哈佛联合开源图像编辑模型IC-Edit,实现高效、精准、快速的指令编辑~
  • 淘宝九宫格验证码识别
  • 【UltralyticsYolo11图像分类完整项目-02】onnx模型转engine格式+TensorRT版Gpu预测C++实现
  • 动态规划之两个数组的dp问题(最长公共子序列)
  • Unity图集系统(Sprite Atlas)
  • Vue实现不同网站之间的Cookie共享功能
  • 信息系统项目管理工程师备考计算类真题讲解十四
  • 【软件设计师:软件工程】9.软件开发模型与方法
  • Java三大基本特征之多态
  • auto_ptr和unique_ptr
  • 统一授权与加密防护,CodeMeter 护航机器视觉创新全链路
  • kafka logs storage
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(16):单词与句子
  • Element-ui Table tree 结构使用(解决无展开箭头)
  • (14)Element Plus项目综合案例
  • 基础算法系列——树的入门
  • kafka records deletion policy
  • 如何设置内网映射端口到外网访问?哪些软件可以进行端口映射?
  • 2025.05.07-携程春招笔试第二题
  • flutter build apk出现的一些奇怪的编译错误
  • K8s网络从0到1
  • 《易语言学习大全》