vue2中对mixin的理解

混入(mixin)是Vue中实现组件功能复用的一种方式,它可以包含数据、方法等组件选项。当组件使用混入对象时,选项会被合并,组件数据优先。可以进行局部混入,如在组件中直接引用,或全局混入,影响所有组件实例。然而,全局混入需谨慎使用,因为可能影响到未预期的组件。Vue3的组合式API是为了解决mixin的一些问题,提供更清晰的代码组织方式。
摘要由CSDN通过智能技术生成

是什么?

混入是用来分发 Vue 组件中的可复用功能,混入对象可以包含任意组件选项。

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

当组件和混入对象含有同名选项时,以组件数据优先

理解:

1.组件调用了混入的对象,孤儿混入的选项会合并到当前组件中去

2.当混入的对象和组件含有同名选项时,以组件数据优先

3.当多个组件引入方法时,其中一个组价里面改变了混入中的某个属性值或者方法内部的操作时,其他组件不会受影响

vue中的mixin

mixin,中文: 混入。 它提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。

举例:

组件 A 和组件 B 中的 methods 有相同的函数,如何做优化?

mixin 本质其实就是一个js对象,它可以包含我们组件中任意功能选项,如datacomponentsmethodscreatedcomputed等等

我们只要将共用的功能以对象的方式传入 mixins选项中,当组件使用 mixins对象时所有mixins对象的选项都将被混入该组件本身的选项中来

在vue中我们可以局部混入和全局混入

局部混入

定义一个mixin对象,有组价options的data,methods属性

var myMixin = {
  created: function () {
    this.hello()
  },
  methods: {
    hello: function () {
      console.log('hello from mixin!')
    },
  },
}

组价通过mixin属性调用mixin对象

Vue.component('componentA', {
  mixins: [myMixin],
})

该组件在使用的时候,混入了mixin里面的方法,在自动执行create生命钩子,执行hello方法

全局混入

通过vue.mixin()进行全局混入

Vue.mixin({
  created: function () {
    console.log('全局混入')
  },
})

使用全局混入需要特别注意,因为它会影响到每一个组件实例(包括第三方组件)

PS:全局混入常用于插件的编写

mixin的缺陷:

mixin最大的问题是:来源不清!

解决方式:v3的组合式api

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 2 ,混入(Mixin)是一种将组件的选项合并到多个组件的方式。它允许我们在多个组件重用相同的选项,例如数据、计算属性、方法等。通过混入,我们可以将相同的逻辑和功能应用于多个组件,同时保持代码的重用性和可维护性。 使用混入非常简单,只需将混入对象传递给组件的 mixins 选项即可。下面是一个示例: ```javascript // 创建一个混入对象 var myMixin = { data() { return { message: 'Hello, mixin!' }; }, methods: { greet() { console.log(this.message); } } }; // 创建一个组件,并将混入对象应用于该组件 Vue.component('my-component', { mixins: [myMixin], created() { this.greet(); // 调用混入对象的方法 } }); // 创建 Vue 实例 new Vue({ el: '#app', template: '<my-component></my-component>' }); ``` 在上面的示例,我们创建了一个名为 `myMixin` 的混入对象,它包含了一个 `data` 属性和一个 `greet` 方法。然后,我们将该混入对象应用于一个组件,在该组件的 `created` 钩子函数调用了 `greet` 方法。最后,我们创建了一个 Vue 实例,并将该组件渲染到指定的 DOM 元素。 通过混入,我们可以在多个组件共享相同的数据和方法,实现代码的复用和逻辑的统一。但需要注意的是,混入的选项将会与组件的选项合并,如果有命名冲突,组件的选项将会优先。因此,在使用混入时,要确保命名不会发生冲突,以避免意外的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值