位置: IT常识 - 正文

【Vue】Vue中mixins的使用方法及实际项目应用详解(vue.mixin是什么)

编辑:rootadmin
【Vue】Vue中mixins的使用方法及实际项目应用详解 文章目录(1)mixin基础(2)mixin特点1.选项合并2.方法和参数在各组件中不共享(3)mixin与vuex的区别(4)mixin与公共组件的区别(5)项目实践(6)总结(1)mixin基础

推荐整理分享【Vue】Vue中mixins的使用方法及实际项目应用详解(vue.mixin是什么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue里面mixins,vue里面mixins,vue.mixin的使用场景和原理,vue mixs,vue中的mixins,vuejs mixins,vue中的mixin,vue mixs,内容如对您有帮助,希望把文章链接给更多的朋友!

官网解释(Vue2.x):

混入(mixin)提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。

如何理解mixins?我们可以将mixins理解成一个数组,数组中有单或多个mixin,mixin的本质就是一个JS对象,它可以有data、created、methods等等vue实例中拥有的所有属性,甚至可以在mixins中再次嵌套mixins。

(2)mixin特点1.选项合并

官网解释(Vue2.x)

当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行‘合并’。 比如,数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>学习mixins的简单使用</title> <script type="text/javascript" src="../js/vue.js"></script></head><body> <div class="my-app">{{message}}</div> <script type="text/javascript"> const myMixin = { data() { return { message: 'this is mixin message' } }, created() { console.log('mixin created') } } new Vue({ el: ".my-app", mixins: [myMixin], data() { return { message: '简单的vue' } }, created() { console.log(this.message) } }) </script></body></html>

界面: mixins与Vue instance合并时,会将created等钩子函数合并成数组,mixins的钩子优先调用,当data、methods对象健值冲突时,以组件优先。

同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。

值为对象的选项,例如 methods、components 和 directives,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对。

2.方法和参数在各组件中不共享【Vue】Vue中mixins的使用方法及实际项目应用详解(vue.mixin是什么)

简述:对于一个混合对象而言,如果在不同的组件中(以组件1和组件2为例)使用数据,如果组件1对mixin中的值改变,不会影响组件2中引用的mixin的data。 例子:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>学习mixins的简单使用(1)</title> <script type="text/javascript" src="../js/vue.js"></script></head><body> <div class="my-app">{{message}}</div> <div class="my-app1">{{message}}</div> <script type="text/javascript"> const myMixin = { data() { return { message: 'this is mixin message', age: '18', } }, created() { console.log('mixin created') } } new Vue({ el: ".my-app", mixins: [myMixin], data() { return { message: '简单的vue' } }, created() { this.age++; console.log('第一次引用mixin——————' + this.age)//19 } }) new Vue({ el: ".my-app1", mixins: [myMixin], data() { return { message: '简单的vue' } }, created() { console.log(this.message) console.log('第二次引用mixin——————' + this.age)//18 } }) </script></body></html>

(3)mixin与vuex的区别

vuex: 状态管理 里面定义的变量在每个组件中均可以进行使用和修改,在任一组件中修改此变量的值之后,其他组件中此变量的值也会随之改变。

mixins: 可以定义共用的变量 在每个组件中使用,引入组件之后,各个变量是相互独立的,值的修改在组件中不会相互影响

(4)mixin与公共组件的区别

组件 :在父组件中引入组件,相当于在父组件中给出独立的一片空间来供子组件使用,父子组件中根据props和$emit来互相传值,实际上两者是相互独立的

mixins:在引入组件之后与组件中的对象与方法进行合并,相当于扩展了父组件中的对象和方法,形成了一个新的组件。

(5)项目实践

在vue项目中使用element-ui时,比如在使用Table表格的时候,免不了申明tableData、total、pageSize等一些Table表格、Pagination分页需要的参数。

可以将重复的data和methods写入一个tableMixin中。

export default { data() { return { total: 0, pageNo: 1, pageSize: 10, tableData: [], loading: false } }, created() { this.searchData() }, methods: { // 预申明,防止报错 searchData() {}, handleSizeChange(size) { this.pageSize = size this.searchData() }, handleCurrentChange(page) { this.pageNo = page this.searchData() }, handleSearchData() { this.pageNo = 1 this.searchData() } }}

当需要的时候直接引入即可

import tableMixin from './tableMixin'export default { ...//引入mixins mixins: [tableMixin], methods: { searchData() { ... } }}

我们在组件内会重新申明serchData方法,类似这种methods对象形式的key,如果key相同,组件内的key会覆盖tableMixin中的key。 当然我们还可以在mixins嵌套mixins。

(6)总结

注意一下 vue 中 mixins 的优先级,component > mixins > extends。

我们暂且将 mixins 称作是组件模块化,灵活运用组件模块化,可以将组件内的重复代码提取出来,实现代码复用,也使我们的代码更加清晰,效率也大大提高。

本文链接地址:https://www.jiuchutong.com/zhishi/300881.html 转载请保留说明!

上一篇:ChatGPT助力校招----面试问题分享(四)

下一篇:Win11磁盘分区后怎么恢复到分区前?Win11磁盘分区后在恢复的方法(win11磁盘分区后不显示)

  • 钉钉怎么发起课程签到(钉钉怎么发起课堂会议视频)

    钉钉怎么发起课程签到(钉钉怎么发起课堂会议视频)

  • 火狐浏览器怎么样(火狐浏览器怎么收藏网页)

    火狐浏览器怎么样(火狐浏览器怎么收藏网页)

  • 抖音和头条账号互通是什么意思(抖音和头条账号互通如何取消)

    抖音和头条账号互通是什么意思(抖音和头条账号互通如何取消)

  • 微信发语音邀请总是显示对方拒绝是怎么回事(微信发语音邀请怎么取消)

    微信发语音邀请总是显示对方拒绝是怎么回事(微信发语音邀请怎么取消)

  • 手机qq如何临时对话(手机qq怎么临时对话)

    手机qq如何临时对话(手机qq怎么临时对话)

  • 微云台摄像头是什么意思(微云台摄像头是什么)

    微云台摄像头是什么意思(微云台摄像头是什么)

  • 冯诺依曼型计算机的主要设计思想是什么(冯诺依曼型计算机的设计思想是)

    冯诺依曼型计算机的主要设计思想是什么(冯诺依曼型计算机的设计思想是)

  • word设置标题为什么前面有个点(word设置标题为一行二列样式艺术字)

    word设置标题为什么前面有个点(word设置标题为一行二列样式艺术字)

  • w10安全模式退出后无法上网(w10安全模式退出来就没有网了)

    w10安全模式退出后无法上网(w10安全模式退出来就没有网了)

  • 微信发红包显示对方账号异常(微信发红包显示对方账户存在异常)

    微信发红包显示对方账号异常(微信发红包显示对方账户存在异常)

  • 抖音上的下载文件在哪(抖音上的下载文件在哪找)

    抖音上的下载文件在哪(抖音上的下载文件在哪找)

  • 微信已实名认证没绑卡收不了红包(微信已实名认证但不能支付)

    微信已实名认证没绑卡收不了红包(微信已实名认证但不能支付)

  • 小爱同学是什么手机的语音助手

    小爱同学是什么手机的语音助手

  • 天猫怎么找各种榜单(如何找到天猫的所有订单)

    天猫怎么找各种榜单(如何找到天猫的所有订单)

  • 手机闲鱼怎么卖东西(闲鱼怎么卖手机步骤)

    手机闲鱼怎么卖东西(闲鱼怎么卖手机步骤)

  • 手机酷狗桌面歌词解锁(手机酷狗桌面歌词怎么设置)

    手机酷狗桌面歌词解锁(手机酷狗桌面歌词怎么设置)

  • ios12怎么打开黑夜模式(ios12如何开启黑暗模式)

    ios12怎么打开黑夜模式(ios12如何开启黑暗模式)

  • 如何将公式转换为数值(如何将公式转换为文本)

    如何将公式转换为数值(如何将公式转换为文本)

  • 智能知识不学不成不问不知是什么(智能知识不学不成不问不知的意思是什么短一点)

    智能知识不学不成不问不知是什么(智能知识不学不成不问不知的意思是什么短一点)

  • 解除微信登录拼多多(如何解除微信登录拼多多)

    解除微信登录拼多多(如何解除微信登录拼多多)

  • 滴滴顺风车怎么下载(滴滴顺风车怎么取消)

    滴滴顺风车怎么下载(滴滴顺风车怎么取消)

  • JavaScript注册监听事件与清除监听事件(js怎么注册)

    JavaScript注册监听事件与清除监听事件(js怎么注册)

  • 基于Pytorch的MNIST手写数字识别实现(含代码+讲解)(基于Pytorch的风格转换)

    基于Pytorch的MNIST手写数字识别实现(含代码+讲解)(基于Pytorch的风格转换)

  • 收到以前年度退回的所得税
  • 特许权使用费所得包括
  • 银行的划分标准
  • 增值税税率调整文件
  • 小规模增值税纳税申报
  • 收到扶贫款怎么做会计分录
  • 免抵退税申报资料情况表在哪下载
  • 个人所得税差额20%政策
  • 小规模房产税减免
  • 会计中预付款包括
  • 没收到发票可以做成本吗
  • 工会经费自留比例
  • 公户收到的款都要确定收入吗
  • 营改增后房地产企业增值税税收筹划存在问题
  • 股权0元转让
  • 季度所得税预缴可以弥补以前年度亏损吗
  • 雇主责任险发票的项目名称怎么写
  • 财务报表依据的会计记录
  • 19年新会计制度
  • 初级备考计划表
  • 预交增值税抵减申报
  • 如何计算净利润增长率
  • win10玩游戏提示内存不足无法处理此命令
  • 公司借银行款会计分录
  • 什么叫交付使用
  • 收到别人押金的会计分录
  • 进项票少了怎么办
  • 以报销形式发放的工资 劳动仲裁
  • 爬虫10054
  • php流程引擎
  • 门面出租赚钱吗
  • 运动目标检测算法
  • 公允价值变动损益借贷方向增减
  • es5和es6的区别
  • php获取文件内容的方法
  • 大头小尾发票是什么意思
  • fold命令 限制文件列宽
  • 财务报表季报应付职工薪酬是指三个月工资累计还是
  • 车险增值税发票模板图片
  • mongodb 安装
  • 一般纳税人首次申领专票
  • 月度合并报表与年度合并区别
  • 计提持有至到期债券投资的利息
  • 商家的这些行为对消费者的购买行为有什么影响
  • 员工工资可以当进项税吗
  • 小规模纳税人企业所得税怎么算
  • 淘宝上买资料可以退吗
  • 科研经费的间接费用会审核吗
  • 疫情防控期间临时性工作补助申请
  • 展厅租赁税率
  • 不能抵扣的进项税额转出会计分录
  • 制造费用怎么结算
  • sql分页查询怎么实现
  • mysql8.0 json
  • sql server索引怎么用
  • mysql5.7解压版安装
  • 写出linux安装的详细步骤
  • Ubuntu远程桌面连接
  • 为大家详细介绍英语
  • 怎么设置电脑开机启动项
  • linux中快捷键
  • 360安全卫士检测出来高危漏洞需要修复吗
  • javascript 语言精粹(修订版)
  • unity中mathf
  • jquery的事件处理
  • jquery实现select选择框内容左右移动代码分享
  • Python scikit-learn 做线性回归的示例代码
  • 批处理常用命令及用法大全
  • python读取文件指定内容
  • 运算符优先级由高到低的顺序
  • domReady的实现案例
  • python抓取数据代码
  • jquery中选择器有哪些
  • javascript密码框
  • 小规模纳税人季报网上申报流程
  • 深圳国税局发票查询
  • 企业安置几级残疾人
  • 宁波国税局几点上班几点下班
  • 国税家园
  • 如何下载电子国税app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设