当前位置:网站首页 > Vue.js开发 > 正文

vue钩子函数是什么(vue3.0钩子函数)



vue3 中的 hooks 就是函数的一种写法,就是将文件的一些单独功能的 js 代码进行抽离出来进行封装使用。

它的主要作用是 Vue3 借鉴了 React 的一种机制,用于在函数组件中共享状态逻辑和副作用,从而实现代码的可复用性。

注意:其实 hooks 和 vue2 中的 mixin 有点类似,但是相对 mixins 而言, hooks 更清楚复用功能代码的来源, 更清晰易懂。

hooks 作为独立逻辑的组件封装,其内部的属性、函数等和外部组件具有响应式依附的作用。

自定义 hook 的作用类似于 vue2 中的 mixin 技术,使用方便,易于上手。

使用 Vue3 的组合 API 封装的可复用,高内聚低耦合。

具备可复用功能,才需要抽离为 hooks 独立文件

函数名/文件名以 use 开头,形如: useXX

引用时将响应式变量或者方法显式解构暴露出来;

示例如下:

通过 hooks 和 utils 函数封装, 可以实现组件间共享和复用,提高代码的可重用性和可维护性。

表现形式不同:hooks 是在 utils 的基础上再包一层组件级别的东西(钩子函数等);utils 一般用于封装相应的逻辑函数,没有组件的东西;

数据是否具有响应式:hooks 中如果涉及到 ref,reactive,computed 这些 api 的数据,是具有响应式的;而 utils 只是单纯提取公共方法就不具备响应式;

作用范围不同:hooks 封装,可以将组件的状态和生命周期方法提取出来,并在多个组件之间共享和重用;utils 通常是指一些辅助函数或工具方法,用于实现一些常见的操作或提供特定功能。

utils 是通用的工具函数,而 hooks 是对 utils 的一种封装,用于在组件中共享状态逻辑和副作用。

通过使用 hooks,您可以简化代码,并使其更具可读性和可维护性。

hooks 和 mixin,都是常用代码逻辑抽离手段,方便进行代码复用;

语法和用法不同Hooks 是在 Vue 3 的 Composition API 中引入的一种函数式编程的方式,而 Mixins 是在 Vue 2 中的一种对象混入机制。Hooks 使用函数的方式定义和使用,而 Mixins 则是通过对象的方式进行定义和应用。

组合性和灵活性不同:Hooks 允许开发者根据逻辑功能来组合代码,封装为自定义 Hook 函数,提高代码复用率。而 Mixins 在组件中的属性和方法会与组件本身的属性和方法进行合并,可能会导致命名冲突或不可预料的行为。

响应式系统不同:Vue 3 的 Composition API 使用了一个新的响应式系统,可以通过 reactive 和 ref 来创建响应式数据,可以更精确地控制组件的更新和依赖追踪。而 Mixins 使用 Vue 2 的响应式系统,对数据的追踪和更新较为简单,可能存在一些性能上的问题。

生命周期钩子不同:在 Vue 3 的 Composition API 中,可以使用 onMounted、onUpdated 等钩子函数来替代 Vue 2 中的生命周期钩子,可以更灵活地管理组件的生命周期。Mixins 依然使用 Vue 2 的生命周期钩子。

优点:组件中相同代码逻辑复用;

缺点:

变量来源不明确:变量来源不明确(隐式传入),不利于阅读,使代码变得难以维护。

命名冲突:多个 mixins 的生命周期会融合到一起运行,但是同名属性、同名方法无法融合,可能会导致冲突。

滥用会造成维护问题:mixins 和组件可能出现多对多的关系,复杂度较高(即一个组件可以引用多个 mixins,一个 mixins 也可以被多个组件引用)。

注:VUE3 提出的 Composition API 旨在解决这些问题。mixins 的缺点是 Composition API 背后的主要动因之一,Composition API 受到 React Hooks 的启发。

hooks 代码:

useCount.ts 函数示例:

Mixins 的代码:

这两个示例展示了使用 Hooks 和 Mixins 的代码风格和组织方式的不同。Hooks 使用函数式的方式来定义逻辑和状态,而 Mixins 则是通过对象的方式进行组合和共享代码。

Vue3 自定义 Hooks 是组件下的函数作用域的,而 Vue2 时代的 Mixins 是组件下的全局作用域。全局作用域有时候是不可控的,就像 var 和 let 这些变量声明关键字一样,const 和 let 是 var 的修正。Composition Api 正是对 Vue2 时代 Option Api 高耦合和随处可见 this 的黑盒的修正,Vue3 自定义 Hooks 是一种进步。

示例 1:数据导出(useDownload)

useDownload 函数封装:

useDownload 在组件中使用:

useCount 函数封装:

useCount 函数在组件中使用:

useMousePosition 函数封装:

useMousePosition 在组件中使用:

1.hooks 函数接收参数写法;

写法 1:参数通过 props 接收,先定义参数类型,内部再解构;

写法 2:接收传参对象,先设置默认值,再定义参数类型

2.解构重命名写法

3.KeyboardEvent 为鼠标按键类型

Vue2 时代 Option Api ,data、methos、watch.....分开写,这种是碎片化的分散的,代码一多就容易高耦合,维护时来回切换代码是繁琐的!

Vue3 时代 Composition Api,通过利用各种 Hooks 和自定义 Hooks 将碎片化的响应式变量和方法按功能分块写,实现高内聚低耦合。

作者 :吴冬林 |高级前端开发工程师

到此这篇vue钩子函数是什么(vue3.0钩子函数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • pcie5(pcie5.0的显卡有哪些)2025-12-09 22:27:08
  • vue路由守卫 安全(vue3.0路由守卫)2025-12-09 22:27:08
  • map转json字符串 /u0000(map转json字符串 fastjson)2025-12-09 22:27:08
  • pcie5.0协议(PCIe5.0协议详解)2025-12-09 22:27:08
  • swagger2.0 出参map(swagger pathmapping)2025-12-09 22:27:08
  • msvcp140_ATOMIC_WAIT.dll丢失的解决方法(msvcp140.dll丢失的解决方法win8.1)2025-12-09 22:27:08
  • Vue钩子函数有哪些含义(vue有哪些勾子函数)2025-12-09 22:27:08
  • vue2改成vue3麻烦吗(vue2升级3)2025-12-09 22:27:08
  • PCIe5.0显卡延长线(pcie3.0显卡延长线)2025-12-09 22:27:08
  • vue安装步骤(vue安装使用)2025-12-09 22:27:08
  • 全屏图片