简述Vue中mixin与extend区别 ?

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

  1. 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"
    
  2. Extend:Extend 是一种基于一个组件创建新组件的方式,被称为组件继承。使用 extend,我们可以创建一个新组件,它继承了另一个组件的所有选项。和 mixin 不同的是,extend 创建的新组件是一个全新的组件,它不会影响到被继承的组件。同样的,如果新组件和被继承的组件有同名的选项,新组件的选项将优先。
    const CompA = {
     template: `<div>A</div>`,
    };
    
    const CompB = Vue.extend(CompA);
    
    const instanceB = new CompB(); // instanceB 是 CompA 的扩展
    

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

发表评论

后才能评论