Vue3 自定义hooks 大集合 你要的自定义hooks 都在这,快来看吧!

大家好,我是宝哥。

转载一篇详解Vue3 自定义hooks的文章。

正文

不知道喜欢 vue3 的小伙伴和我是不是一样,刚上手vue3 的时候 对自定义hooks 一脸懵逼,在一些视频网站学习的时候老师讲解到自定义hooks 最喜欢用 加减乘除来描述 自定义hooks 是咋用的,可能是我理解能力比较差吧,我看了这个 加减乘除的自定义hooks 之后感觉跟没看一样,还是一脸懵逼,所以个人觉得这种知识还是结合项目或者业务来说才是比较能让人理解的。

但是平时开发的过程中却好像也不怎么需要自定义hooks ,那我们到底需不需要自定义hooks,又该如何学习自定义hooks 呢,首先先在这跟你说结论:自定义hooks 不是必须的 他只是为我们提供一种 逻辑复用 的方式,但是他有利于你复用逻辑 代码更简洁,那如何学?学习别人的思想啊!然后自己融汇贯通即可。

6634d7aa7d5a5f4e94e6a1988c400e7f.jpeg
qianyan.png

介绍

其实我们平常说的 自定义hooks 在vue3 官方说法叫组合式 API (Composition API)[1]

  • 组合式 API (Composition API) 是一系列 API 的集合,使我们可以使用函数而不是声明选项的方式书写 Vue 组件

  • 虽然这套 API 的风格是基于函数的组合,但组合式 API 并不是函数式编程。组合式 API 是以 Vue 中数据可变的、细粒度的响应性系统为基础的,而函数式编程通常强调数据不可

  • 组合式 API 最基本的优势是它使我们能够通过组合函数[2]来实现更加简洁高效的逻辑复用。在选项式 API 中我们主要的逻辑复用机制是 mixins,而组合式 API 解决了 mixins 的所有缺陷[3]

使用

平时我们 写自定义hooks 可能有两种

  • 一种是 基于业务的 自定义hooks 只是为了单纯提取 可复用的逻辑 ,缺点是只能用在自己项目中

  • 一种是 可复用行强的 可在全局使用的 比如对于弹框、表格、表单等等的自定义hooks

基于业务封装的 hooks

最近我在开发低代码的项目 我在项目中得封装一套组件 看下面的伪代码:

输入框

366ed0df2371d237c90d575fe08fc7d8.jpeg
1.png

下拉框

d9d95256528871846c0f62612ee1fd5d.jpeg
2.png

开关:

f0029deff6a51f1b58904c29953563e8.jpeg
3.png

大家可以看到 每个组件都有个共性,有个配置项 status 如果值为 disabled 的时候 会被赋值到组件上 要是有很多组件 我们都得复制一下这个代码 那就比较恶心了,这个时候我们就可以用自定义hooks 去封装这个属性:

a5142d83146f9083d014229895889115.jpeg
4.png

我们组件就可以 通过 hooks 去引入这个属性了 这样 每个组件也只要引入这个hooks 就行

a14d39c78bfb96f2e473d93c2ce4d338.jpeg
5.png

复用性强的自定义hooks:

1) 更改网站title

大家有没有遇到过这种业务 就是每个页面进入之后都有他自己对应的 title 你都得去改 如果没有的话 那他就是 之前的title 不用改 所以你就可能在每个页面写出 类似以下的代码:

6b431e017295dea67c05b41c846cc5be.jpeg
7.png

但是你要是用了 封装之后的 hooks 之后

bac940dc616c33cb5df64083d8962bfc.jpeg
8.png

你只需要把这个hooks 引入 只写一句代码 就行

const setTitle = useTitle('测试')
2) 大家写后台管理的 时候是不是大多场景都是 对于表格的增删改查 ,对于分页的操作每个页面其实都是一样的,这个时候我们就可以把他封装起来
3cb77bd774f313858070ca919164a1c0.jpeg
6.png

这个hooks 发给任何人 他们都能用到自己的项目中 这个就是复用性强的 不像我们上一类 只能针对于我们自己项目用

给大家分享一下 我平时收藏的 vue3 hooks的网站以及文章:

开源库与开源项目中的hooks

🚀vue3官方推荐社区项目:VueUse[4]

这个是我最推荐大家的hooks 平时没事的时候在里面逛一下 看看源码 绝对能学到很多,我平时用的比较多的是其中的 useResizeObserveruseTitleuseClipboarduseDraggable

🚀ahooks-vue[5]

ahooks 的 vue 实现。许多 hooks 是从ahooks[6]移植过来的,但是不完全一致。包含了 useRequestuseAxiosuseFullscreenuseTable

🚀个人封装的hooks 库[7]

这个是我偶然发现的 一个hooks 库 感觉也是模仿其他库的,仅供参考

🚀vue-hooks[8]

主要包含了 useDateuseStoreuseActions

🚀vue-use-web[9]

跟 vueuse 有点像不知道是不是vueuse 前身,而且都是国外大佬维护的

🚀vue-hooks-plus[10]

其中包含47个高质量 & 可靠 hook函数 其中useRequesetuseWebSocketuseFetchs等都很优秀

🚀针对 Vue3 的实用Hooks集合[11]

useRequestuseDateuseVirtualList 我在项目中都用到了

🚀20kstars 的后台管理项目:vue-vben-admin[12]

这个是 点赞比较多的 vue3 后台管理项目 其中 我上面的分页hooks 就是抄他的 里面还有很多 表格表单hooks 大家也可以参考 其中包含了 useContextuseScrolluseEventListeneruseTableuseTitle

🚀vue3-antd-admin[13]

喜欢用 antd 的同学可以看看其中的useI18n useModaluseEventbus 方案都很优秀

表格相关的

🚀一文学会vue3如何自定义hook钩子函数和封装组件[14]

🚀【Vue3】如何封装一个超级好用的 Hook ![15]

🚀useTable表格hooks封装和使用(Vue3)[16]

🚀vue3流水线开发分页列表?😁 useTable了解一下[17]

🚀Vue3自定义useTable[18]

🚀在Vue3这样子写页面更快更高效[19]

🚀基于vue3+Arco Design的table组件的hook二次封装[20]

每个人封装的 表格 hook 其实都有区别 所以大家可以综合一下 总结出比较适合自己项目的,因为每个人项目中的 ui 分页等等 都不太一样 所以个人建议总结出一个 集成到自己项目中是最好的

关于请求的 hook

🚀Vue3 教你实现公司级网络请求的 Hook[21]

🚀Vue3使用hook封装常见的几种异步请求函数场景,让开发更加丝滑[22]

其他 hooks

🚀Form表单组件封装和使用(Vue3)[23]

他把antdvue 的form 二次封装了 并且搭配了自己的封装的hooks

🚀【vue3】写hook三天,治好了我的组件封装强迫症。[24]

封装了 下拉框选项从后端获取值得hooks 以及关于 loading 状态的 hook

🚀Vue3自定义一个Hooks,实现一键换肤[25]

一键换肤的 hooks

🚀Vue3使用hook封装媒体查询和事件监听,使Vue的开发更加丝滑🚀🚀🚀[26]

🚀聊聊Vue3+hook怎么写弹窗组件更快更高效[27]

🚀【Vue3 Hook】实现 useTimeout 代替 setTimeout[28]

🚀公共Hooks封装之文件下载useDownloadBlob[29]

🚀在vue中封装useIntro来更好的使用Intro.js[30]

总结

以上是我工作这么长时间 收藏到的 ,分享出来希望能够给到大家一点帮助,如果大家也有比较好自定义hooks的方案 和 hooks 库可以在下面评论哦 我觉得比较好的话会再给他加上去的,最终也希望自己能 做一个跟 vueuse媲美的 hooks 名字我都想好了 ,就叫 jym-hooks (掘友们一起创建的 hooks 库)

a8bdcdca8f7f886d955323b7b39c51a4.jpeg
zongjie.jpg

关于本文

作者:前端摸鱼杭小哥

https://juejin.cn/post/7308277343243141172

有其他想法,欢迎评论~

公号文章分七类

随时都会有更新

程序员

  1. 真诚利他

  2. 一个30岁前端老社畜的人生经历

  3. 2023年中大厂面试经历分享,很可惜,但是没关系

  4. 给迷茫的朋友一点建议吧,主要是前端方向的。

  5. 37岁的老前端在大专院校教前端

  6. 一个30岁老前端的人生经历(学习+工作+婚姻+孩子),给迷茫的朋友一点激励。

  7. 程序员如何应对ChatGPT带来的改变

  8. 尤雨溪解读 2022 Web 前端生态趋势

  9. 阿里前端:我的老婆失业了,周围同事也在不断被裁

  10. 一个月薪 12000 的北京程序员的真实生活

  11. 作为前端,工作中处理过什么复杂的需求?

  12. 尤雨溪亲自回应Vue.js涉及国家安全漏洞问题

  13. 开源作者恶意搞破坏,谁来为开源买单?

  14. 程序员裸辞后,在家全职接单一个月的感触

  15. 2022年如何成为一名优秀的大前端Leader?

面试

  1. 14个JS面试难点深入解读与代码实现

  2. 中小型公司三年工作经验的面试经历

  3. 2023年中大厂面试经历分享,很可惜,但是没关系

  4. 面试官:能不能给 Promise 增加取消功能和进度通知功能... 我:???

  5. 一个22届被裁前端思想上得转变

  6. 23年底,两年前端菜狗被裁后的面试经历

  7. 一年空窗期后我是如何准备面试的?

  8. 一份比较完整的字节技术面试题,包含算法、计算机网络和前端等

  9. 面试官:请使用 JS 完成一个 LRU 缓存?

  10. 正确介绍自己的项目,终于不用害怕面试了

  11. 本人是工作 11 年的老前端,面试一个月忽悠了十几个 offer

JavaScript

  1. 14个JS面试难点深入解读与代码实现

  2. ES14数组升级来袭,这六个新API助你高效开发

  3. FaceBook 开源 AtomicCss 解决方案:Stylex

  4. 前端是怎么解析Excel、PDF、Word、PPT等文件的?

  5. 面试官:能不能给 Promise 增加取消功能和进度通知功能... 我:???

  6. 14个提高JavaScript代码质量的小技巧

  7. JS es6仿网易云音乐播放器

  8. WebSocket 从入门到入土

  9. 如何构建一个仅有2KB大小、无依赖的状态管理器(以及它如何帮我获得两个不同的工作机会)

  10. JS代码其实可以这样写

  11. 详解HTML中的拖拽案例和难点分析

  12. 20 个 JS 工具函数助力高效开发

  13. 使用 JavaScript 编写更好的条件语句

  14. JS 运行机制最全面的一次梳理

  15. 8个console.log的解决方案

  16. 25个有用的 JavaScript 单行代码

  17. 前端工程师都在忙些什么?

  18. 我用 80 行核心 JS 代码每个月躺着挣一瓶肥宅快乐水

  19. localStorage 的高阶用法

  20. 某一线前端小组长的 Code Review 分享

  21. 一行 Object.keys() 引发的思考

  22. 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理

  23. 常用的前端JavaScript方法封装

  24. 刷算法题常用的JS基础扫盲

  25. 2022前端应该掌握的10个 JS 小技巧

  26. Three.js实现跳一跳(在线玩)

  27. 10个常用的JS工具库,80%的项目都在用!

  28. 我的代码简洁之道

  29. 一行 Object.keys() 引发的血案

前端开发

  1. 聊一聊自己的前端之路以及后面晋升的一些想法

  2. 如何做好前端项目组组长

  3. 如何构建一个仅有2KB大小、无依赖的状态管理器(以及它如何帮我获得两个不同的工作机会)

  4. 高级前端开发工程师必备:Hooks、React Router v6 和状态管理

  5. 高级前端开发工程师必知:浏览器解析代码、JavaScript代码执行流程、原型链与闭包

  6. 高级前端开发工程师必备:Hooks、React Router v6 和状态管理

  7. 高级前端开发工程师必知:浏览器解析代码、JavaScript代码执行流程、原型链与闭包

  8. JS代码其实可以这样写

CSS

  1. CSS中的相对单位和绝对单位,以及rem自适应布局

  2. 10个常见渐变交互效果

  3. CSS动画的实现和最佳优化实践

  4. 现代CSS中的换行布局技术

  5. 你知道flex: 0 0 200px;和grid-template-columns: repeat(3, 1fr);的含义吗?

  6. 10 个不错的 CSS 小技巧

  7. 为什么会存在1px问题?怎么解决?

  8. 2022 年的 CSS 全览

  9. CSS mask 实现鼠标跟随镂空效果

AI

  1. 无代码工具+人工智能:19岁少年月入5000美元,八款免费工具助你在线赚钱!

  2. AI 时代来临,这些 AI 工具让你的工作更加高效!

  3. 程序员如何应对ChatGPT带来的改变

  4. 10个热门的ChatGPT项目推荐

  5. ChatGPT 8个场景下的灵活应用技巧,让您事半功倍!

资源

  1. 程序员必看!15个优秀的中文技术博客汇总

  2. AI 时代来临,这些 AI 工具让你的工作更加高效!

  3. 程序员如何应对ChatGPT带来的改变

  4. 10个热门的ChatGPT项目推荐

  5. 推荐15个有用的前端技术博客

  6. 尤雨溪解读 2022 Web 前端生态趋势

  7. 2022,VSCode 前端插件推荐

  8. 几个高级前端常用的API

  9. 30个前端开发人员必备的顶级工具

  10. 45 个 Git 经典操作场景,专治不会合代码

  11. 推荐 10 个很“哇塞”的Web“资源”给前端工友,收藏等于学会~

  12. 送给 xdm 的 10 个 web 在线前端资源,优雅永不过时~

  13. 干货!移动端真机调试指南,对调试说easy

  14. 25 个前端相关的学习网站和一些靠谱的小工具

最后

欢迎长按图片加好友,宝哥会第一时间和你分享前端行业趋势,面试资源,学习途径等等。

c336c61184d371fdc6b936b989597fcc.png

添加好友备注【加群】拉你进技术交流群

公众号前端开发博客 专注 前端开发技术,分享 前端开发资源WEB前沿资讯,如果喜欢我的分享,给 宝哥 点一个 或者 分享 都是对我的支持

关注公众号后,在首页:

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF

  • 回复「Vue脑图」获取 Vue 相关脑图

  • 回复「思维图」获取 JavaScript 相关思维图

  • 回复「简历」获取简历制作建议

  • 回复「简历模板」获取精选的简历模板

  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。

  • 回复「知识点」下载高清JavaScript知识点图谱

  • 回复「读书」下载成长的相关电子书

老规矩,学会了点个赞或在看呀~ 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值