mixins是什么?
mixins(混入)是一种分发Vue组件中可复用功能的非常灵活的一种方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。
mixins理解
组件在引用之后相当于在父组件内开辟了一块单独的空间,来根据父组件props过来的值进行相应的操作,单本质上两者还是泾渭分明,相对独立。
而mixins则是在引入组件之后,则是将组件内部的内容如data等方法、method等属性与父组件相应内容进行合并。相当于在引入后,父组件的各种属性方法都被扩充了。
单纯组件引用:
父组件 + 子组件 >>> 父组件 + 子组件
mixins:
父组件 + 子组件 >>> new父组件
有点像注册了一个vue的公共方法,可以绑定在多个组件或者多个Vue对象实例中使用。另一点,类似于在原型对象中注册方法,实例对象即组件或者Vue实例对象中,仍然可以定义相同函数名的方法进行覆盖,有点像子类和父类的感觉。
用法:
1、创建混入对象:在src文件夹创建mixins文件夹,再在mixins文件夹下创建一个index.js文件
// 创建一个需要混入的对象 export const mixinstest = { data(){ return { testMix: '混入对象的data' } }, created(){ console.log('这是混入对象的created') }, methods:{ mixinsFun(){ console.log('调用混入对象的methods的函数') } }, computed:{ testMix2(){ return this.testMix+':这是混入对象计算结果。' } }, watch: { testMix(newVal,oldVal){ console.log('混入对象的watch') } } }
2、在组件内引入并引用混入
<template> <div> <div>{{testMix}}</div> <div @click="mixinsFun">{{testMix}}</div> <input type="text" v-model="testMix"> <div>{{testMix2}}</div> </div> </template> <script> import {mixinstest} from '../../mixins/index' export default { mixins: [mixinstest], data (){ return { testMix:'这是组件的数据' } }, created(){ console.log('这是组件的created') }, methods: { mixinsFun(){ console.log('调用组件的methods的函数') } }, computed:{ testMix2(){ return this.testMix+':这是组件计算结果' } }, watch: { testMix(newVal,oldVal){ console.log('组件的watch') } } } </script> <style> </style>
3、相关的解释
当在组件中和混入中有相同的‘testMix’这个数据时,显示组件中’testMix’对应的数据,当只用混入中有’testMix‘函数时,显示混入中’testMix’对应的数据。
在组件中和混入中有相同的函数mixinsFun()时,在组件中调用时,调用的是组件中的mixinsFun()函数,当只用混入中有mixinsFun()函数时,在组件中调用mixinsFun()是调用混入中的。
在组件中和混入中有相同的computed函数testMix2()时,在组件中调用时,调用的是组件中的testMix2()函数,当只用混入中有computed函数testMix2()时,在组件中调用testMix2()是调用混入中的。
在组件中和混入中有相同的created()函数时,先执行混入中的created,再执行组件中的created。猜想其他生命周期也应该是一样。
在组件中和混入中有相同的watch()函数testMix时,先执行混入中watch的testMix,再执行组件中watch的testMix。
更多vue.js相关知识,可访问 Vue.js答疑 栏目!!
以上就是vue mixins是什么?的详细内容,更多请关注易知道|edz.cc其它相关文章!