| 
 
| 混入(mixin)提供了一种非常灵活的方式,来分发vue组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。 
 1.钩子函数
 混入对象的钩子将在组件自身钩子之前调用。
 
 //  minxin.js
 const mixin = {
 data() {
 return{
 msg1: '我是混入内容1',
 msg2: '我是混入内容2'
 }
 },
 created() {
 console.log(this.msg3)
 }
 }
 export default mixin;
 </script>
 ...
 // 页面组件
 <template>
 <div class="header">
 <h1></h1>
 </div>
 </template>
 <script>
 import mixin from './mixins/mixin'
 export default {
 mixins: [mixin],
 name: 'Header',
 data(){
 return{
 msg1: '我是组件内容1',
 msg3: '我是组件内容2'
 }
 },
 created() {
 console.log(this.msg2)
 console.log(this.msg1)
 },
 }
 </script>
 
 // 我是组件内容2
 // 我是混入内容2
 // 我是组件内容1
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 3.普通方法合并
 当混合值为对象的选项时,例如 methods、components、directive,将被混合为同一个对象,两个对象键名冲突时,取组件对象的键值对。
 
 <body>
 <div id="app"></div>
 </body>
 <script src="./vue.js"></script>
 <script>
 var Mixins = {
 methods: {
 mixin: function() {
 console.log('MixinOne')
 },
 mixinTwo: function () {
 console.log('MixinTwo')
 }
 }
 }
 new Vue({
 el: '#app',
 mixins: [Mixins],
 methods: {
 mixin: function () {
 console.log('component')
 }
 },
 mounted() {
 this.mixin()
 this.mixinTwo()
 }
 })
 
 // component
 // MixinTwo
 </script>
 
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 4.局部混入
 在componnets目录下新建mixins文件夹,并在mixins目录下创建一个mixin.js文件,代码如下:
 
 const mixin = {
 data() {
 return {
 msg: "hello"
 }
 },
 methods: {
 mixinMethod() {
 console.log(this.msg + ',这是mixin混入方法')
 }
 }
 }
 export default mixin;
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 在需要的页面中引入:
 
 <template>
 <div>{{msg}}</div>
 </template>
 <script>
 import mixin from '../mixins/mixin'
 export default {
 mixins: [mixin],
 data() {
 return {
 }
 }
 mounted() {
 this.mixinMethod()
 }
 }
 
 // hello,这是mixin混入的方法
 
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 5.全局混入
 在main.js加入以下代码
 
 Vue.mixin({
 data() {
 return {
 msg: 'hello'
 }
 },
 methods: {
 mixinMethod() {
 console.log(this.msg+',这是mixin混入的方法')
 }
 }
 })
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 在组件中直接引用:
 
 <template>
 <div>{{msg}}</div>
 </template>
 <script>
 export default {
 data() {
 return {
 }
 }
 mounted() {
 this.mixinMethod()
 }
 }
 
 // hello,这是mixin混入的方法
 </script>
 
 ————————————————
 版权声明:本文为CSDN博主「小铁匠95」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
 原文链接:https://blog.csdn.net/qq_40431896/article/details/121287949
 
 
 | 
 |