简述Vue中mixin与extend区别

在 Vue 中,mixin 和 extend 都是用来复用组件代码的方法,但它们有一些关键的不同:

Mixin:Mixin 是一种将组件选项(如 data、methods、computed 等)混入到另一个组件的方式。使用 Mixin 的目的是为了复用组件代码,减少重复。我们可以创建一个 mixin,然后在多个组件中使用它。当一个组件使用了 mixin,mixin 的所有选项将被混入该组件,如果组件和 mixin 有同名的选项,组件的选项将优先。

const myMixin = {
 created() {
   console.log('mixin hook called');
 },
};

new Vue({
 mixins: [myMixin],
 created() {
   console.log('component hook called');
 },
});

// => "mixin hook called"
// => "component hook called"

Extend:Extend 是一种基于一个组件创建新组件的方式,被称为组件继承。使用 extend,我们可以创建一个新组件,它继承了另一个组件的所有选项。和 mixin 不同的是,extend 创建的新组件是一个全新的组件,它不会影响到被继承的组件。同样的,如果新组件和被继承的组件有同名的选项,新组件的选项将优先。

const CompA = {
 template: `<div>A</div>`,
};

const CompB = Vue.extend(CompA);

const instanceB = new CompB(); // instanceB 是 CompA 的扩展

总的来说,mixin 更适合于跨多个组件共享功能,而 extend 更适合于基于一个组件创建一个新组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值