当前位置: 首页 > 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 专注处理远程数据请求和缓存管理;

相关文章:

  • 【万字长文】深入浅出 LlamaIndex 和 LangChain:从RAG到智能体,轻松驾驭LLM应用开发
  • 关于form、自定义Hook、灰度发布、正则表达(只能输入数字和不要空格)
  • kafka logs storage
  • 【LeetCode 热题 100】二叉树 系列
  • 深入解析 C# 常用数据结构:特点、区别与优缺点分析
  • 快速上手Pytorch Lighting框架 | 深度学习入门
  • 经济体制1
  • 网络基础入门第6-7集(抓包技术)
  • 含铜废水循环利用体系
  • 【RAG】indexing 中的 Hierarchical Indexing(分层索引)
  • 手写 Vue 源码 === 依赖清理机制详解
  • Arm核的Ubuntu系统上安装Qt
  • 系统网络运维基础:Linux与Windows实践指南(带电子书资料)
  • Qt 通过控件按钮实现hello world + 命名规范(7)
  • 课外活动:简单了解原生测试框架Unittest前置后置的逻辑
  • Vue.js Watch 侦听器:深入理解与应用
  • 低代码云MES、轻量级部署、让智造更简单
  • 【AI入门】CherryStudio入门5:创建知识库,对接Obsidian 笔记
  • 特殊版本,官宣永久免费
  • 摄像头模组AF、OIS模组
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心
  • 人民日报整版调查:中小学春秋假,如何放得好推得开?
  • 毗邻三市人均GDP全部超过20万元,苏锡常是怎样做到的?
  • 趣看 | 五一黄金周:你拍风景,拍风景的人在拍你
  • 全国铁路五一假期累计发送1.51亿人次,多项运输指标创历史新高
  • 马上评|颜宁“简历打假”的启示