vue mixin和extends的使用
全局使用场景:所有子组件内部都与要某一个state、computed或者某个方法时,甚至在所有子组件某个生命周期内都需要执行一个一样功能时,都可用全局mixin;
相同生命周期函数会先运行mixin内部的钩子函数,然后再运行组件内部的钩子函数,对于state、computed或者某个方法时,组件内部的会覆盖mixin内部的定义的
全局注入步骤:
首先新建一个mixin.js文件:
import { mapGetters } from 'vuex'
// export const Mixin = {
export default{
data(){
return {
navChildStatusOne: 1
}
},
computed: {
...mapGetters([
'navChildStatus'
]),
pageMainLeft() {
return this.navChildStatus ? '' : 'page-main-left'
}
},
methods: {
getUserlist(){
console.log('from Mixin')
}
}
}
然后再mian.js页面引入
import mixins from '@/common/js/mixin'
然后注册
Vue.mixin(mixins)
使用:
在所有组件内部都可调取内部的方法和状态:
mounted() { this.navChildStatusOne this.getUserlist() },
引用顺序同全局一样
局部注入步骤:
首先定义一个混入对象,然后混入对象混入到当前的组件中:
import mixins from '@/common/js/mixin' export default{ mixins: [mixins], }
extends: 相当于复制了一个组件,在组件内部可以定义新的状态和方法,组件内部同名的方法或者state会覆盖mixins里面的