vue中mixins
mixins.js
// mixins.js
export default {
data () {
return {
name: 'mixins',
minixName: 'mixinsObj',
flag: false
}
},
mounted() {
console.log('mixinsMounted');
},
methods: {
speak() {
console.log('this is mixins');
},
getData() {
return '100';
}
}
}
todo.vue
// todo.vue
import myMixins from './mixins';
export default {
data () {
return {
name: 'todo',
lists: [1, 2, 3, 4]
}
},
mounted() {
console.log('todoMounted');
},
mixins: [myMixins], // todo.vue 中声明mixins进行混合
methods: {
speak () {
console.log('this is todo');
},
submit() {
console.log('submit');
},
}
}
最终的混合结果
//==========
// 最终得到的结果
//==========
export default {
data () {
return {
name: 'todo', // 共同有的data, 最后保留自己的data
lists: [1, 2, 3, 4], // 自己独有的,保留
minixName: 'mixinsObj', // todo没有的,会被添加进来
flag: false // todo没有的,会被添加进来
}
},
mounted() {
// 在钩子函数中的, 会被合并到todo.vue 的钩子函数中, mixins中的代码在前,自己的在后 所以mixins加载的快哦
console.log('mixinsMounted');
console.log('todoMounted');
},
methods: {
// 同时有的方法, 会被封装为一个数组, 先执行mixins中的,后执行todo自己的
speak () {
[
function() {
console.log('this is mixins');
},
function() {
console.log('this is todo');
}
].forEach(item => {
item();
})
},
// 自己独有的,保留
submit() {
console.log('submit');
},
// 自己没有的方法会被添加进来
getData() {
return '100';
}
}
}