vue 3 推出后,Hooks 库让开发变得更简单。这里介绍四个好用的库,每个都有特色。
需要各种工具函数:选 VueUse
专注数据请求功能:选 Vue Hooks Plus
从 react 转 Vue 开发:选 ahooks-vue
追求小巧轻量:选 V3Hooks
VueUse 提供了 200 多个工具函数,覆盖日常开发的各种需求。
常用功能
防抖节流:useDebounce、useThrottle
输入框搜索时自动延迟处理,不用自己写复杂逻辑
本地存储:useLocalStorage、useSessionStorage
直接读写本地存储,页面刷新数据不丢失
剪贴板:useClipboard
一键复制内容,自动处理权限
页面标题:useTitle
路由切换时自动更新页面标题
元素尺寸监听:useResizeObserver
元素大小变化时立即响应
暗色主题:useDark
一键切换明暗主题,自动保存设置
设备信息:useMouse、useBattery
获取鼠标位置、设备电量等信息
优点
只打包用到的功能,不增加多余体积
完美支持 TypeScript
Nuxt3 官方推荐使用
社区活跃,更新及时
这个库主要解决数据请求和相关状态管理问题。
核心功能 useRequest
这个 Hook 封装了请求的常用功能:
import { useRequest } from 'vue-hooks-plus'
// 基本使用
const { data, loading, error } = useRequest(() =>
fetch('/api/user').then(res => res.json())
)
// 带配置的使用
const { data: userList } = useRequest(() => getUserList(), {
debounceWait: 500, // 防抖 500ms
pollingInterval: 3000, // 3秒轮询
retryCount: 3, // 错误重试3次
cacheKey: 'userList', // 缓存key
refreshOnWindowFocus: true // 窗口聚焦重新请求
})
特色功能
全局请求状态管理
多标签页数据同步
自定义请求中间件
分页和滚动加载
其他实用 Hook
useWebSocket:WebSocket 连接
useVirtualList:虚拟列表
useForm:表单管理
usePermission:权限控制
优点
核心体积小于 25KB
文档详细,有在线示例
更新速度快
这是阿里 ahooks 的 Vue 3 版本,适合从 React 转 Vue 的开发者。
主要功能
useRequest:请求管理,API 设计与 Axios 相似
useAntdTable:快速集成 Ant Design 表格
useLoadMore:移动端下拉加载
useLockFn:防止重复提交
useVirtualList:虚拟滚动列表
使用示例
import { useRequest } from 'ahooks-vue'
// 与 React 版本相似的用法
const { data, run } = useRequest(getUserList, {
manual: true, // 手动触发
onSuccess: (data) => {
console.log('请求成功', data)
}
})
优点
API 与 React 版本一致,迁移成本低
完美配合 Ant Design Vue
功能稳定可靠
这个库追求极致的体积和性能,适合对包大小敏感的项目。
核心功能
数据请求:useRequest,功能完整但体积小
倒计时:useCountDown,支持暂停继续
表单校验:useForm,基于 reactive 实现
防抖节流:useDebounce,源码简洁易懂
剪贴板:useClipboard,使用原生 API
代码示例
import { useCountDown } from 'v3hooks'
// 简单的倒计时
const { current, start, pause, reset } = useCountDown({
time: 60 * 1000, // 60秒
onEnd: () => {
console.log('倒计时结束')
}
})
优点
特点 | VueUse | Vue Hooks Plus | ahooks-vue | V3Hooks |
---|---|---|---|---|
主要用途 | 通用工具 | 数据请求 | React迁移 | 轻量应用 |
功能数量 | 200+ | 47+ | 50+ | 45+ |
体积 | 按需加载 | 中等 | 中等 | 很小 |
学习难度 | 简单 | 中等 | 简单 | 简单 |
企业中后台系统:Vue Hooks Plus
它的 useRequest 功能完整,配套工具丰富
从 React 转 Vue:ahooks-vue
API 熟悉,迁移顺畅
小程序或微前端:V3Hooks
体积小,零依赖
一般项目:VueUse + Vue Hooks Plus
工具函数和请求管理都覆盖
可以配置自动导入,省去手动引入的麻烦:
// vite.config.js
import AutoImport from 'unplugin-auto-import/vite'
export default {
plugins: [
AutoImport({
imports: [
'vue',
'@vueuse/core',
'vue-hooks-plus'
]
})
]
}
VueUse 像是工具箱,什么都有
Vue Hooks Plus 专注处理数据请求
ahooks-vue 让 React 开发者无缝切换
V3Hooks 追求极致轻量
根据项目需求选择合适的库,能让开发效率大大提升。如果是新项目,建议从 VueUse 开始,根据需要再添加其他库。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!
近日,据 MIT Technology Review 报道,一位名为“Repairnator”的机器人在 GitHub 上“卧底”数月,查找错误并编写和提交修复补丁,结果有多个补丁成功通过并被采纳,这位 Repairnator 到底是如何拯救程序员于水火的呢?
你还在为该使用无状态组件(Function)还是有状态组件(Class)而烦恼吗?你还在为搞不清使用哪个生命周期钩子函数而日夜难眠吗?你在还在为组件中的this指向而晕头转向吗?这样看来,说React Hooks是今年最劲爆的新特性真的毫不夸张。
我们将userReducer函数返回的原始dispath命名为origin_dispatch,自定义dispatch函数,当action为函数的时候,我们执行action函数,并将origin_dispatch当作参数传进去;action不是函数,直接调用origin_dispatch,不做处理
使用useEffect 就像瑞士军刀。它可以用于很多事情,从设置订阅到创建和清理计时器,再到更改ref的值。与 componentDidMount、componentDidUpdate 不同的是,在浏览器完成布局与绘制之后,传给 useEffect 的函数会延迟调用。
从 React Hooks 正式发布到现在,我一直在项目使用它。但是,在使用 Hooks 的过程中,我也进入了一些误区,导致写出来的代码隐藏 bug 并且难以维护。这篇文章中,我会具体分析这些问题,并总结一些好的实践,以供大家参考
Hooks 的 API 可以参照 React 官网。本文主要是结合 Demo 详细讲解如何用 Hooks 来实现 React Class Component 写法,让大家更深的理解 Hooks 的机制并且更快的入门。 注意:Rax 的写法和 React 是一致的
以下是上一代标准写法类组件的缺点,也正是hook要解决的问题,型组件很难拆分和重构,也很难测试。业务逻辑分散在组件的各个方法之中,导致重复逻辑或关联逻辑。
Hooks出来已经有段时间了,相信大家都用过段时间了,有没有小伙伴们遇到坑呢,我这边就有个 setInterval 的坑,和小伙伴们分享下解决方案。写个 count 每秒自增的定时器,如下写法结果,界面上 count 为 1 ?
对于 React 16.7 中新的 hooks 系统在社区中引起的骚动,我们都有所耳闻了。人们纷纷动手尝试,并为之兴奋不已。一想到 hooks 时它们似乎是某种魔法,React 以某种甚至不用暴露其实例
9月份开始,使用了React16.8的新特性React Hooks对项目进行了重构,果然,感觉没有被辜负,就像阮一峰老师所说的一样,这个 API 是 React 的未来。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!