概念:混入 (mixins) 是一种分发 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、相关的解释
3.1 当在组件中和混入中有相同的‘testMix’这个数据时,显示组件中’testMix’对应的数据,当只用混入中有’testMix‘函数时,显示混入中’testMix’对应的数据。
3.2 在组件中和混入中有相同的函数mixinsFun()时,在组件中调用时,调用的是组件中的mixinsFun()函数,当只用混入中有mixinsFun()函数时,在组件中调用mixinsFun()是调用混入中的。
3.3 在组件中和混入中有相同的computed函数testMix2()时,在组件中调用时,调用的是组件中的testMix2()函数,当只用混入中有computed函数testMix2()时,在组件中调用testMix2()是调用混入中的。
3.4在组件中和混入中有相同的created()函数时,先执行混入中的created,再执行组件中的created。猜想其他生命周期也应该是一样。
3.5在组件中和混入中有相同的watch()函数testMix时,先执行混入中watch的testMix,再执行组件中watch的testMix。