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

hook与mixin


看完vue3就开始看vue3的源码,表示很懵~

刚把rollup打包搞完,这不响应式就接着来了!,还是写篇直接使用vue3的博客清清脑吧!


什么是hook、mixin?

mixin:

Vue2中多个组件内存在重复JS业务逻辑,使用mixin将重复逻辑的代码进行抽离,实现代码的复用,避免代码冗余。

hook:

本质是一个函数,将setup中使用的组合式Api按功能进行封装,同时也能实现代码的复用。


怎样去使用mixin、hook?

mixin的使用:

(1)在src文件夹中创建mixins文件夹,在里面去写对应的mixin.js文件

(2)抽离要复用的代码

  data(){return {}},methods:{},computed:{},filters:{},created(){},mounted(){console.log("我是mixins");}
}

(3)最后在要使用的组件中进行引入

import引入抽离模块的js,然后配合mixins配置(值为一个数组)进行使用。

hook的使用

(1)在src文件夹中创建hooks文件夹,在里面去写对应的hook.js文件

(2)然后再hook.js文件中编写js程序

import { reactive, onMounted, onBeforeUnmount } from "@vue/runtime-core";
export default function () {//想要去实现代码的复用,方法是!!!!hook函数//实现鼠标打点相关的数据let point = reactive({x: 0,y: 0,});//实现鼠标打点的方法function savepoint(event) {point.x = event.pageX;point.y = event.pageY;}onMounted(() => {window.addEventListener("click", savepoint);});//当组件卸载的时候就去移除这个函数onBeforeUnmount(() => {window.removeEventListener("click", savepoint);});return point;
}

(3)最后再使用该功能的文件中进行引入


对比优缺点

mixin:

特性:

  1. mixins中的生命周期会与使用mixins的组件的自带的生命周期在一起调用,mixins中的生命周期函数会比引入mixins的组件调用的快。
  2. 组件的data、methods、filters会覆盖mixins里的同名data、methods、filters。
  3. .不同mixin里的同名方法,按照引进的顺序,最后的覆盖前面的同名方法。

缺点:

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

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

  3. mixins和组件可能出现多对多的关系,复杂度较高

hook

(相较于mixin的优点)

  1. Hook引入变量和方法是显示传入,能清楚的知道变量和方法的数据来源。

  2. 使用Hook函数时,因为变量和函数是显示引用,我们就可以通过解构赋值,来避免函数和变量重名现象。


最后,两个可以混搭但是不建议!

http://www.lryc.cn/news/21366.html

相关文章:

  • 【C语言】自定义类型
  • 没有上司的舞会(C++,树形DP)
  • 【java基础】static和final关键字的作用及其用法详解
  • #集成学习#:bagging、boosting、stacking和blending
  • NCRE计算机等级考试Python真题(一)
  • C#协变逆变
  • 算法设计与分析期末考试复习(四)
  • qsort函数排序数据 and 模拟实现qosrt函数(详解)
  • Mysql视图,存储过程,触发器,函数以及Mysql架构
  • 什么是线程死锁?如何解决死锁问题
  • C语言几种判断语句简述
  • 【python学习笔记】:SQL常用脚本(二)
  • 【Linux】进程地址空间
  • Qt音视频开发17-vlc内核回调拿图片进行绘制
  • 安装配置DHCP
  • MarkDown中写UML图的方法
  • Axure8设计—动态仪表盘
  • 【C++】类和对象的六个默认成员函数
  • 4、算法MATLAB---认识矩阵
  • vue3+rust个人博客建站日记2-确定需求
  • Linux安装云原生网关Kong/KongA
  • Vue学习笔记(2)
  • 2023年三月份图形化四级打卡试题
  • Python操作Excel
  • Codeforces Round #853 (Div. 2) C. Serval and Toxel‘s Arrays【统计次数,算贡献】
  • 微信小程序-1:比较两数的大小
  • 数据结构——树
  • 【华为OD机试模拟题】用 C++ 实现 - 找到它(2023.Q1)
  • python中yield的使用
  • GO进阶(4) 深入Go的内存管理