1. 程式人生 > 實用技巧 >vue mixin和extends的使用

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: 相當於複製了一個元件,在元件內部可以定義新的狀態和方法,同名的元件內部的會覆蓋引用的

<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>