Vue(Vue2+Vue3)——34.mixin(混入)

简介: Vue(Vue2+Vue3)——34.mixin(混入)

34 mixin(混入)


mixin:翻译过来叫混入,也有人叫混合,官方叫混入

作用:两个组件共享一个配置(配置必须是一样的),本质就是复用配置

通过案例理解学习如何使用以及作用


34.1 编写案例


提出需求,新增一个组件,当点击学生姓名的时候,弹窗展示学生的姓名,当点击学校姓名的时候,弹窗展示学校的姓名

虽然实现了效果,但是不够好

这些代码都是一样的,如果能进行封装下复用就更好了,这时候就可以借助mixin进行混入了


34.2 创建mixin文件


创建mixin.js文件,写成一个对象进行用常量接收并且暴露


34.3 引用混入


创建好并写好对应的代码后,就可以在需要用的组件里面进行引入了


34.4 配合混入


引入完之后,需要加入一个全新的配置项:mixins,它的值是一个数组,和props有点像

测试一下


34.5 mixin里面都可以写什么?


只要是组件中能写的属性,mixin都可以写,比如这里我写了一个挂载函数

两个组件当然就是输出两次了

再比如我在混合中定义一个data,里面分别有x,y

分别引入并使用

发现组件中也有混合中的x和y了


34.6 混入和组件优先级


刚才在混入里面定义了x,如果在组件中也有一个x,那么谁的优先级更高呢

通过测试发现是组件的优先级大于混合


34.7 一个坑


上面刚验证过,优先级是组件大于混入,准确来说,如果data中的数据,methods中的方法发生冲突确实是组件的优先级大于混入的,但是如果是一些生命周期钩子函数,就会以混入的优先级大于组件的优先级,并且都会保留


34.8 全局混入


刚才举例的都是局部混入,如果想实现全局混入,可以这么做

在main.js里面引入混入并使用,因为main.js是程序的入口

这样写就会在全部的vm和vc里面加入混入,可能会导致性能降低,根据自需求和场景酌情使用即可



34.9 总结


mixin(混入)

功能:可以把多个组件共用的配置提取成一个混入对象

  • 使用方式:
  •  1 定义混入 例如:{data(){}}
  •  2 使用混入 例如:(1)全局混合 Vue.mixin(xxx) (2)mixins:['xxx']
相关文章
|
4天前
|
JavaScript
【vue】 vue2 监听滚动条滚动事件
【vue】 vue2 监听滚动条滚动事件
10 1
|
4天前
【vue3】Argumnt of type ‘history:RouterHistory;}is not assignable to paraeter of type ‘RouterOptions‘.
【vue3】Argumnt of type ‘history:RouterHistory;}is not assignable to paraeter of type ‘RouterOptions‘.
6 0
|
4天前
|
JavaScript
【vue3】vue3中路由hash与History的设置
【vue3】vue3中路由hash与History的设置
9 0
|
4天前
|
编解码 前端开发
【Vue3】解决电脑分辨率125%、150%及缩放导致页面变形的问题
【Vue3】解决电脑分辨率125%、150%及缩放导致页面变形的问题
11 0
|
4天前
|
JavaScript
【vue】 vue 翻页时钟制作,vue2、vue3
【vue】 vue 翻页时钟制作,vue2、vue3
11 0
|
JavaScript 测试技术 容器
Vue2+VueRouter2+webpack 构建项目
1). 安装Node环境和npm包管理工具 检测版本 node -v npm -v 图1.png 2). 安装vue-cli(vue脚手架) npm install -g vue-cli --registry=https://registry.
1014 0
|
2天前
|
JavaScript
|
4天前
|
JavaScript
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
16 6
|
1天前
|
存储 缓存 JavaScript
vue代码优化方案
【7月更文挑战第13天】 **Vue.js 优化要点:** 分解大组件以提高复用性和加载速度;利用计算属性与侦听器优化数据处理;使用Object.freeze()减少响应式数据;借助Vuex或Composition API管理状态;实现虚拟滚动和无限加载提升长列表性能;路由懒加载减少初始加载时间;用Vue DevTools检测性能瓶颈;定期代码审查与重构;应用缓存策略;遵循最佳实践与团队规范,提升应用整体质量。
10 2
|
4天前
|
JavaScript 前端开发
【vue】 el-table解决分页不能筛选全部数据的问题
【vue】 el-table解决分页不能筛选全部数据的问题
15 4