关于Mixin在Vue中混合分发的使用(个人小结)*

关于Mixin在Vue中混合分发的使用(个人小结)*

定义:vue中提供了一种混合机制–mixins,用来更高效的实现组件内容的复用。
用法1:直接在app.vue中写入以下js代码

var mixin = {
  created: function () {
    console.log('我是mixin')
  }
}
new Vue({
  mixins: [mixin],
  created: function () {
    console.log('我是根组件')
  }
})
// => "我是mixin"
// => "我是根组件"

由于递归合并的特性,输出结果会以组件为主,例如:

var mixin = {
  data: function () {
    return {
      message: 'hello',
      foo: 'abc'
    }
  }
}

new Vue({
  mixins: [mixin],
  data: function () {
    return {
      message: 'goodbye',
      bar: 'def'
    }
  },
  created: function () {
    console.log(this.$data)
    // => { message: "goodbye", foo: "abc", bar: "def" }
  }
})

用法2:没有谁会在实际开发中,在app.vue中进行以上代码的编写,所以,一般来说,我是会在components文件夹中对应的组件文件夹中建立一个mixin的文件包,在其中写入相关的js代码,结构目录为,components->comA->(xxx.vue/mixin->xxx.js)
xxx.js代码部分:(mixin的js文件中包含了vue组件的全部钩子函数,当然,同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用,如同样是created的钩子,mixin中输入1,使用mixin的组件输出2,那么调用的时候就是先1,后2,若directive等冲突,将优先使用组件内的。)

const mymixin = {
data() {
  return {
   name: 'mixin'
  }
 },
 created() {
  console.log('mixin...', this.name);
 },
 mounted() {},
 methods: {}
 }
 export default mymixin //必须导出

组件内使用,代码如下:

import '@/mixin'; // 引入mixin文件(注意路径,此路径为案例路径)
export default {
 mixins: [mixin] //数组格式,当然,可以引入多个mixin,此时已经可以使用其中的方法了
}

既然mixin的导入,且写在data,methods属性等同级下,那么,在mixin中的方法如何调用?
当然this大法好喽,直接this.mixin中的方法名即可,例如:

//mixin的methods中有一方法为
testFn () {
  console.log('调用成功')
}
// 在组件中引入mixin后直接用(created为例测试)
created () {
  this.testFn() //创建组件时候即可输出'调用成功'
}
 

以上为个人总结,记录自己成长每一步,欢迎各位大牛指正补充,谢谢!

Vue 混合mixins)是一种可以复用组件选项的方式。通过混合,我们可以将多个组件选项合并为一个组件选项,从而提高代码的复用性。 混合可以包含任意组件选项,如 data、methods、computed、watch、生命周期钩子等。当多个组件需要共享相同的选项时,我们可以使用混合来减少代码冗余。 使用混合非常简单,只需要定义一个混合对象,然后在组件使用 mixins 选项将混合对象添加到组件选项即可。例如: ``` // 定义一个混合对象 var myMixin = { created: function () { console.log('混合对象的 created 钩子被调用') } } // 使用混合对象 Vue.component('my-component', { mixins: [myMixin], created: function () { console.log('组件的 created 钩子被调用') } }) ``` 在上面的代码,我们定义了一个混合对象 myMixin,其包含了一个 created 生命周期钩子。然后在组件使用 mixins 选项将 myMixin 添加到组件选项。最终,组件的 created 钩子和混合对象的 created 钩子都会被调用。 需要注意的是,当混合对象和组件选项含有同名选项时,混合对象的选项会覆盖组件选项的同名选项。如果混合对象的选项是钩子函数,那么它们会在组件对应的钩子函数之前调用。 另外,混合对象可以被其他混合对象所继承,从而实现更复杂的代码复用。如果多个混合对象含有同名选项,那么它们会按照混合对象的顺序依次调用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值