欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue中使用mixins混入方式

 更新時間:2024年08月28日 10:28:23   作者:前端大斗師  
這篇文章主要介紹了Vue中使用mixins混入方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

mixins在Vue中的用法

一、mixins混入

混入(mixins)提供了一種非常靈活的方式,來分發(fā)vue組件中的可服用功能。一個混入對象可以包含任意的組件選項(vue在script的部分)。當組件使用混入對象時,所有混入對象的選項都將被“混合”進入改組件本身的選項。

vue提供的一種混合機制,能夠更好的實現(xiàn)組件功能復用,混合對象(mixins)可以包含任意組件選項(data、created、mounted、methods、filters等),組件引入后相關選項會進行合并,相當于引入后,父組件各屬性進行擴充;

二、組件和mixins的區(qū)別

組件在引用之后相當于在父組件內(nèi)開辟了一塊單獨的空間,來根據(jù)父組件props過來的值進行相應的操作,本質(zhì)上兩者還是涇渭分明,相對獨立。

mixins則是在引入組件之后,是將組件內(nèi)部的內(nèi)容如data等方法、method等屬性與父組件相應內(nèi)容進行合并。相當于在引入后,父組件的各種屬性方法都被擴充。

簡單理解:減少代碼冗余,提高開發(fā)效率,復用組件數(shù)據(jù),方法等,以提高開發(fā)速度

三、為什么使用mixins

  • mixins分為全局混入和局部混入,下面我們著重講局部混入
  • 注意不同組件混入之后,會生成不同的實例,數(shù)據(jù)會相互隔離,互不影響
  • 注意在引入mixins的同時,組件中重復定義,minxins中的屬性方法會被覆蓋
  • 使用 mixins 之后,該組件包含 mixins 中的所有數(shù)據(jù),并且可以使用 this 進行訪問。 您也可以使用變量而不是單獨的文件來定義 mixins

四、Vue項目實際使用

  • 新建src/minxins/index.js
// 引入下載文件接口
import { downTemplateFile } from '@/api/home'
// 導出 myMixins 函數(shù)
export const myMixins = {
  data() {
    return {

    }
  },
  methods: {
    // 下載方法,參數(shù)傳文件ID
    toLogin(id) {
      downTemplateFile({ id1: id }).then(res => {
        if (res.size != 97) {
          let blob = new Blob([res])
          let objectUrl = window.URL.createObjectURL(blob)
          if (navigator.msSaveBlob) {
            return navigator.msSaveBlo(blob, '下載文件.doc')
          } else {
            let a = document.createElement('a')
            document.body.appendChild(a);
            a.style.display = 'none'
            a.setAttribute('href', objectUrl)
            a.setAttribute('download', '下載文件.doc')
            a.click();
            URL.revokeObjectURL(objectUrl);
          }
        } else {
          this.$message.error('系統(tǒng)錯誤,請稍后重試!')
        }
      })
    }
  }
}
  • index.vue引入注冊并使用mixins
<template>
  <div class="index">
    <button @click="downLoadTempFile(1)">觸發(fā)mixins下載方法</button>
  </div>
</template>
<script>
// 引入 myMixins 函數(shù),導出什么就引入什么
import { myMixins } from '@/mixins';
export default {
  data(){
    return {
    }
  },
  // 注冊
  mixins: [myMixins],
  methods:{
    async downLoadTempFile(id){
      // 直接使用this.方法名就可以調(diào)用到myMixins里的方法
      this.toLogin(id)
    },
  }
}
</script>

五、全局混入(不推薦)

  • main.js
import Vue from 'vue'
import App from './App.vue'

import { myMixins } from "@/mixins"

Vue.mixin(myMixins);

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論