zoukankan      html  css  js  c++  java
  • vue混入Mixins

    vue混入-Mixins

    混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。

    混入定义了一部分可复用的方法或者计算属性。

    ​ 混入对象可以包含任意组件选项。

    ​ 当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

    普通混入例子
    <div id="app" v-cloak>
        <p @click="a">{{msg}}</p>
        <p>{{aaa}}</p>
      </div>
    <script>
      let common = {
            methods:{
              a(){
                console.log("a")
              }
            },
            computed:{
              aaa(){
                return "我是计算属性"
              }
            }
      }
      new Vue({
            el:"#app",
            mixins:[common],
            data:{
              msg:"hello world"
            }
      })
    </script>
    选项合并

    当组件和混入对象含有同名选项时,这些选项将以恰当的方式混合。

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

    以下实例中,Vue 实例与混入对象包含了相同的方法。从输出结果可以看出两个选项合并了。

    <body>
        <div id="app"></div>
        <script type="text/javascript">
            var mixin = {
                created: function () {
                    document.write('混入调用' + '<br>')
                }
            }
            new Vue({
                el: "#app",
                mixins: [mixin],
                created: function () {
                    document.write('组件调用' + '<br>')
                }
            });
        </script>
    </body>
    结果:混入调用
         组件调用

    如果 methods 选项中有相同的函数名,则 Vue 实例优先级会较高。

    <body>
        <div id="app">
            <p><button @click="a">点击</button></p>
        </div>
        <script src="./base/vue.js"></script>
        <script>
            let common = {
                methods: {
                    a(){
                        console.log("a")
                    }
                }
            }
            new Vue({
                el: "#app",
                mixins: [common],
                methods: {
                    a(){
                        console.log("vue实例")
                    }
                }
            })
        </script>
    </body>
    结果:vue实例

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

    <body>
        <div id="app"></div>
        <script type="text/javascript">
            var mixin = {
                methods: {
                    foo: function () {
                        console.log('foo')
                    },
                    conflicting: function () {
                        console.log('from mixin')
                    }
                }
            }
            var vm = new Vue({
                el:"#app",
                mixins: [mixin],
                methods: {
                    bar: function () {
                        console.log('bar')
                    },
                    conflicting: function () {
                        console.log('from self')
                    }
                }
            })
            vm.foo() // => "foo"
            vm.bar() // => "bar"
            vm.conflicting() // => "from self"
        </script>
    </body>
    全局混入

    混入也可以进行全局注册。使用时格外小心!一旦使用全局混入,它将影响每一个之后创建的 Vue 实例。使用恰当时,这可以用来为自定义选项注入处理逻辑。

    // 为自定义的选项 'myOption' 注入一个处理器。
    Vue.mixin({
      created: function () {
        var myOption = this.$options.myOption
        if (myOption) {
          console.log(myOption)
        }
      }
    })
    
    new Vue({
      myOption: 'hello!'
    })
    // => "hello!"
    请用今天的努力,让明天没有遗憾。
  • 相关阅读:
    Cesium的类-Camera
    FTP文件操作之上传文件
    cnBlog 的windows live writer 客户端配置
    Windows 7 USB DVD Download Tool 制作的U盘无法启动安装Windows7 SP1
    存储过程中对于文本是两个单引号,而不是一个单引号或者一个双引号
    BackGroundWorker使用总结
    SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别
    T-SQL中default值的使用
    partial 的好处
    sql where 1=1和 0=1 的作用
  • 原文地址:https://www.cnblogs.com/cupid10/p/15617703.html
Copyright © 2011-2022 走看看