美文网首页
vue混入(mixin)的详解

vue混入(mixin)的详解

作者: 小铁匠 | 来源:发表于2021-11-14 11:14 被阅读0次

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

    1.钩子函数

    同名钩子函数将会混合为一个数组,都将被调用到,但是混入对象的钩子将在组件自身钩子之前调用。

    var mixin = {
      created: function () {
        console.log('混入对象的钩子被调用')
      }
    }
    
    new Vue({
      mixins: [mixin],
      created: function () {
        console.log('组件钩子被调用')
      }
    })
    // => "混入对象的钩子被调用"
    // => "组件钩子被调用"
    
    2.数据对象合并
    <body>
        <div id="app"></div>
    </body>
    <script src="./vue.js"></script>
    <script>
        var Mixins = {
            data: {
                msg: 'I am Mixins',
                msg1: 'I am Mixins msg1'
            },
            created() {
                console.log('我是组件中的变量:' + this.msg2)
            }
        }
        new Vue({
            mixins: [Mixins],
            el: '#app',
            data: {
                msg: 'I am #app',
                msg2: 'I am msg2'
            },
            created() {
                console.log(this.msg)
                console.log('我是混入对象中的变量:' + this.msg1)
            }
        })
        
        // 我是组件中的变量:I am msg2
        // I am #app
        // 我是混入对象中的变量:I am Mixins msg1
    </script>
    
    
    3.普通方法合并

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

    <body>
        <div id="app"></div>
    </body>
    <script src="./vue.js"></script>
    <script>
        var Mixins = {
            methods: {
                mixin: function() {
                    console.log('Mixin')
                },
                mixinTwo: function () {
                    console.log('MixinTwo')
                }
            }
        }
        new Vue({
            el: '#app',
            mixins: [Mixins],
            methods: {
                mixin: function () {
                    console.log('#app')
                }
            },
            mounted() {
                this.mixin()
                this.mixinTwo()
            }
        })
        
        // #app
        // MixinTwo
    </script>
    
    
    4.局部混入

    在componnets目录下新建mixins文件夹,并在mixins目录下创建一个mixin.js文件,代码如下:

    const mixin = {
      data() {
        return {
          msg: "hello"
        }
      },
      methods: {
        mixinMethod() {
          console.log(this.msg + ',这是mixin混入方法')
        }
      }
    }
    export default mixin;
    

    在需要的页面中引入:

    <template>
        <div>{{msg}}</div>
    </template>
    <script>
    import mixin from '../mixins/mixin'
    export default {
        mixins: [mixin],
        data() {
            return {
            }
        }
        mounted() {
            this.mixinMethod()
        }
    }
    
    // hello,这是mixin混入的方法
    
    
    5.全局混入

    在main.js加入以下代码

    Vue.mixin({
      data() {
        return {
          msg: 'hello'
        }
      },
      methods: {
        mixinMethod() {
          console.log(this.msg+',这是mixin混入的方法')
        }
      }
    })
    

    在组件中直接引用:

    <template>
        <div>{{msg}}</div>
    </template>
    <script>
    export default {
        data() {
            return {
            }
        }
        mounted() {
            this.mixinMethod()
        }
    }
    
    // hello,这是mixin混入的方法
    </script>
    
    

    相关文章

      网友评论

          本文标题:vue混入(mixin)的详解

          本文链接:https://www.haomeiwen.com/subject/oyfozltx.html