vue中混入mixin的理解与使用 您所在的位置:网站首页 vue混入mixin vue中混入mixin的理解与使用

vue中混入mixin的理解与使用

#vue中混入mixin的理解与使用| 来源: 网络整理| 查看: 265

混入 mixin 基础

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

mixin 的作用就是实现将多个组件或页面中公用的属性或方法抽取出来单独定义在 mixins 中,当组件中同时声明了和 mixins 中同名的属性或方法,组件里边的属性或方法优先级高于 mixins;当某个组件或页面引用了 minxins 里面的属性或方法,并进行了一些修改操作,这些操作只对当前组件本身有效,不会影响其他组件。

在 src 目录下新建 js 文件夹,新建 mixin.js 文件 let myMixins = { // 创建mixins对象,该对象可以有组件中的 data 和 methods 和 所有生命周期 data() { return { name: 'jackson', } }, created() { this.hello() }, methods: { hello() { console.log('我是混入对象mixins') } } } export default myMixins;

组件目录 在这里插入图片描述 在子组件 childOne.vue 和 子组件 childTwo.vue 中都引入 mixin.js 文件

子组件1 {{name}} import myMixin from '../../../js/mixin' export default { // 混入的固定写法 mixins: [myMixin], name: 'childOne', data() { return { } } }

当在需要用到 name 属性的组件中引用了 mixin 文件中的 name 属性 在这里插入图片描述

选项合并

当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行 “合并”。 比如,数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先 如:给 childOne.vue 组件中设置 name 属性 在这里插入图片描述 childTwo.vue 组件中未设置 name 属性。结果如图 在这里插入图片描述 mixin.js 中的方法被调用了两次,两个子组件各自调用了一次 在这里插入图片描述 当在 childOne.vue 组件中也设置和混入对象同名的hello 方法时,而 childTwo.vue 中未设置 在这里插入图片描述 结果:子组件1中调用的是自身定义的 hello 方法,子组件2中调用的是 mixin 中定义的 hello 方法。 同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 值为对象的选项,例如 methods,components 和 directives,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对。

总结 开发中,可以单独创建一个 js 文件,在该文件中声明一个 mixins 对象,然后将组件或页面公用的属性或方法定义在 mixins 里面,并将对象暴露出去,在需要使用到的组件中引入该 js 文件即可。当组件中定义了相同的属性或方法时,组件里声明的属性和方法,优先级高于 mixins。虽然 mixins 中的属性或方法可以被多个组件或页面共用,但是在某个组件或页面中修改相关属性或方法时,不会对其他组件或页面造成影响。同名钩子函数将合并为一个数组,因此都将被调用,只是,混入对象的钩子函数将在组件自身的钩子函数之前调用。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有