Rumah > hujung hadapan web > tutorial js > vue混入的相关操作介绍(附示例)

vue混入的相关操作介绍(附示例)

不言
Lepaskan: 2019-03-26 10:45:22
ke hadapan
2838 orang telah melayarinya

本篇文章给大家带来的内容是关于vue混入的相关操作介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

定义:混入是一种分发Vue组件中可复用功能非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

//定义一个混入对象

var myMixin={

    created:function(){

        this.hello();

    },

    methods:{

        hello:function(){

            console.log('hello from mixin');

        }

    }

}

//定义一个使用混入对象的组件

var Component = Vue.extend({

    mixins:[myMixin]

})

var component = new Component();=>hello from mixin

Salin selepas log masuk

选项合并

当组件和混入对象含有同名选项时,这些选项将以恰当的方式混合。
比如,数据对象在内部会进行递归合并,在和组件的数据发生冲突时以组件数据优先。

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

var mixin ={

    data:function(){

        return{

            messageL:'hello',

            foo:'abc'

        }

    },

    created(){

        console.log('混入对象的钩子被调用')

    }

}

new Vue({

    mixins:[mixin],

    data:function(){

        return{

            message:'goodbye',

            bar:'def

        }

    },

    created:function(){

        console.log('组件钩子被调用')

        console.log(this.$data);

        // => { message: "goodbye", foo: "abc", bar: "def" }

    }

})

Salin selepas log masuk

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

var mixin={

    methods:{

        foo:function(){

            console.log('foo')

        },

        conflicting:function(){

            console.log('from mixin')

        }

    }

}

var vm = new Vue({

    mixins:[mixin],

    methods:{

        bar:function(){

            console.log('bar')

        },

        conflicting:function(){

            console.log('from self')

        }

    }

})

vm.foo()//foo

vm.bar()//bar

vm.conflicting()//form self

Salin selepas log masuk

全局混入

也可以全局注册混入对象。注意使用!一旦使用全局混入对象,将会影响到所有之后创建的Vue实例。使用恰当时,可以为自定义对象注入处理逻辑。

1

2

3

4

5

6

7

8

9

10

11

12

//为自定义的选项myOption注入一个处理器。

Vue.mixin({

    creted:function(){

        var myOption = this.$options.myOption;

        if(myOption){

            console.log(myOption)

        }

    }

})

new Vue({

    myOption:'hello'

})

Salin selepas log masuk

谨慎使用全局混入对象,因为会影响到每个单独创建Vue实例(包括第三方模板)。大多数情况下,只应当应用于自定义选项,就像上面示例一样。也可以将其用作Plugins以避免产生重复作用。

自定义选项合并策略

自定义选项将使用默认策略,即简单的覆盖已有值。如果想让自定义选项以自定义逻辑合并,可以向Vue.config.optionMergeStrategies添加一个函数:

1

2

3

Vue.config.optionMergeStrategies.myOption=function(toVal,fromVal){

    return mergedVal

}

Salin selepas log masuk

对于大多数对象选项,可以使用methods的合并策略:

1

2

var strategies = Vue.config.optionMergeStrategies;

strategies.myOption = strategies.methods

Salin selepas log masuk

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!

Atas ialah kandungan terperinci vue混入的相关操作介绍(附示例). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan