vue mixin和extends的使用
阿新 • • 發佈:2020-11-30
全域性使用場景:所有子元件內部都與要某一個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: 相當於複製了一個元件,在元件內部可以定義新的狀態和方法,同名的元件內部的會覆蓋引用的
<script> import dtl from './question-dtl.vue' export default{ name: 'extendsss', extends: dtl, mounted(){ this.breadcrumbs = [ { name: '試題詳情-試題詳情' } ] this.GetQuestionBasicsInfo() this.GetQuestionInfo() }, methods: { GetQuestionBasicsInfo(){ }, GetQuestionInfo(){ } } } </script>