vue中mixins代码执行优先级
时间: 2023-10-29 16:04:12 浏览: 91
详解vue mixins和extends的巧妙用法
在 Vue 中,如果一个组件使用了多个 mixins,那么它们的代码执行顺序遵循以下规则:
1. 全局注册的 mixin 会比局部注册的 mixin 先执行;
2. 如果有多个全局注册的 mixin,它们的执行顺序遵循 Vue.use() 的注册顺序;
3. 如果有多个局部注册的 mixin,它们的执行顺序遵循在组件中定义 mixins 的顺序。后定义的 mixin 会覆盖先定义的 mixin 中相同的属性或方法。
举个例子,假设我们有以下的组件定义:
```javascript
Vue.mixin({
created() {
console.log('全局mixin 1');
}
});
Vue.mixin({
created() {
console.log('全局mixin 2');
}
});
const myMixin = {
created() {
console.log('局部mixin 1');
}
};
new Vue({
mixins: [myMixin],
created() {
console.log('组件创建');
}
});
```
那么在控制台中,会依次输出:
```
全局mixin 1
全局mixin 2
局部mixin 1
组件创建
```
因为全局 mixin 先于局部 mixin 执行,而全局 mixin 之间的执行顺序是按照它们注册的顺序执行的。而局部 mixin 则是按照它们在 mixins 数组中的顺序执行的。最后才会执行组件自身的 created 钩子。
阅读全文