如何管理 Vue Mixin

当你的 Vue 项目开始增长时,你可能会发现自己一遍又一遍地复制和粘贴数据、方法,如果你有类似的组件。

当然,你可以将所有这些单独的文件编写为一个组件,并使用 props 来自定义它们。

为了避免这项艰巨的任务,大多数人只是继续添加重复的代码。最好的 Vue 开发人员会知道有一个更好的解决方案——Vue Mixins。

解决方案 – Vue Mixins

值得庆幸的是,在 Vue 2 中,我们可以使用 Mixins——这是在不同组件之间共享代码的最简单方法之一

Mixin 对象可以使用——数据、挂载、创建、更新等——当一个组件使用 mixin 时,mixin 对象中的所有信息都将混合到组件中。

然后,组件可以访问 mixin 中的所有选项,就像您在组件本身中声明它一样。在举个例子之后,这将更有意义。

因此,让我们创建一个添加数据的 mixin、一个生命周期钩子和一个方法。

export default {
  data() {
    return {
      msg: 'Hello World',
    }
  },
  created: function () {
    console.log('Printing from the Mixin')
  },
  methods: {
    displayMessage: function () {
      console.log('Now printing from a mixin function')
    },
  },
}

然后,在任何 Vue 组件中,我们都可以导入这个 mixin 并使用它!

import mixin from "./mixin.js";
new Vue({
  mixins: [mixin],
  created: function () {
    console.log(this.$data);
    this.displayMessage();
  },
});
// EXPECTED OUTPUT
// => "Printing from the Mixin"
// => {msg: ‘Hello World’}
// => "Now printing from a mixin function"

如您所见,使用 mixin 后,该组件包含 mixin 中的所有数据,并且使用 访问它。您还可以使用变量而不是单独的文件来定义 mixin。

此外,请务必注意,在使用钩子时,mixin 钩子将在组件的钩子之前调用。

如果存在命名冲突会怎样?

当 mixin 中存在与组件中的选项同名的数据、方法或任何组件选项时,可能会在组件及其 mixin 之间进行命名。

如果发生这种情况,则遗嘱中的属性优先。

例如,如果组件和 mixin 中都有一个数据变量 — 将返回组件中定义的值。在代码中,这看起来像:titlethis.title

mixin.js

export default {
  data() {
    title: 'Mixin'
  },
}

组件.vue

<script>
import mixin from './mixin.js'
export default {
   mixins: [mixin],
   data () {
      title: ‘Component’
   },
   created: function () {
      console.log(this.title)
   }
}
// Output: "Component"
</script>

来自我们组件的数据优先于默认的混合值。

作者:terry,如若转载,请注明出处:https://www.web176.com/news/frontend/28612.html

(0)
打赏 支付宝 支付宝 微信 微信
terryterry
上一篇 2025年8月18日 下午5:26
下一篇 2025年10月28日 下午8:36

相关推荐

发表回复

登录后才能评论