最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue混入mixin使用特點(diǎn)

 更新時(shí)間:2022年12月22日 10:21:25   作者:script~  
混入(mixin)提供了一種非常靈活的方式,來分發(fā)vue組件中的可復(fù)用功能。一個(gè)混入對象可以包含任意組件選項(xiàng)。當(dāng)組件使用混入對象時(shí),所有混入對象的選項(xiàng)將被“混合”進(jìn)入該組件本身的選項(xiàng)

什么是混入

混入 (mixin) : 是一種分發(fā)Vue組件中可復(fù)用功能的非常靈活的一種方式。混入對象(mixins)是一個(gè)js對象,它可以包含我們組件中script項(xiàng)中的任意功能選項(xiàng),如data、components、created、methods 、computed、watch等等。當(dāng)組件使用混入對象時(shí),所有混入對象的選項(xiàng)將被混入該組件本身的選項(xiàng)。

創(chuàng)建Mixins

在src目錄下創(chuàng)建一個(gè)mixins文件夾,文件夾下新建自己要定義的混入對象js文件。使用對象的形式來定義混入對象,在對象中可定義與vue組件一樣的data、components、created、methods 、computed、watch等屬性,并通過export導(dǎo)出該對象.

代碼示例: pageMixin.js

export const  pageMixin={
    data() {
        return {
            page: { // 分頁信息
                pageNo: 10, // 當(dāng)前頁
                limit: 10, // 每頁行數(shù)
                total: 0, // 列表總數(shù)量
            },        
            tableList: [], // 列表數(shù)據(jù)
            loading: false, // 加載列表數(shù)據(jù)的Loading
            PAGE_SIZES: [5, 10, 20, 30, 50, 90], // 每頁行數(shù)列表,用于切換每頁行數(shù)
            LAYOUT: "total, sizes, prev, pager, next, jumper" // Element表格組件中使用的功能
        }
    },
    methods: {
        // 查詢列表數(shù)據(jù)
        queryList() {},
        // 修改當(dāng)前頁
        handleCurrentChange(pageNo) {
            this.page.pageNo = pageNo;         
            this.queryList();
        },
        // 修改每頁行數(shù)
        handleSizeChange(limit) {
            this.page.pageNo = 1;
            this.page.limit = limit;
            this.queryList();
        },
    },
}

使用Mixins

在需要調(diào)用的組件頁面中引入pageMixin.js文件

import {pageMixin} from "@/mixins/pageMixin"
export default {
    mixins: [ pageMixin ],
    data() {
      return {    	
      }
    }        
}
  • 組件調(diào)用了混入對象故混入對象的選項(xiàng)會合并到當(dāng)前組件中。
  • 當(dāng)混入對象和組件含有同名選項(xiàng)時(shí),這些選項(xiàng)將以恰當(dāng)?shù)姆绞竭M(jìn)行“合并”。比如,數(shù)據(jù)對象在內(nèi)部會進(jìn)行遞歸合并,并在發(fā)生沖突時(shí)以組件數(shù)據(jù)優(yōu)先,即發(fā)生沖突會覆蓋混入對象的選項(xiàng)。

在組件(Home.vue)中使用

<template>
  <div class="home">
    <span>This is a Home page</span>
  </div>
</template>
<script>
import myMixins from "../mixins";   //導(dǎo)入混入(mixin)
export default {
  name: 'Home',
  mixins: [myMixins]     //使用混入(mixin)
}
</script>

注意觀察Home組件里面,并沒有任何的生命周期鉤子或者方法,但是打開頁面之后查看控制臺,卻打印了內(nèi)容,這就是混入對象中的created鉤子中的console.log()。

mounted生命周期鉤子

<template>
  <div class="home">
    <span>This is a Home page</span>
  </div>
</template>
<script>
import myMixins from "../mixins";
export default {
  name: 'Home',
  mixins: [myMixins],
  mounted(){         
    this.hello()     //在該組件中并沒用定義hello方法,使用的是混入中的hello
  }
}
</script>

選項(xiàng)合并

當(dāng)組件和混入對象含有同名選項(xiàng)時(shí),這些選項(xiàng)將以恰當(dāng)?shù)姆绞竭M(jìn)行“合并”。數(shù)據(jù)對象在內(nèi)部會進(jìn)行遞歸合并,并在發(fā)生沖突時(shí)以組件數(shù)據(jù)優(yōu)先。

此時(shí),同名的created生命周期鉤子進(jìn)行了合并,合并為一個(gè)數(shù)組,因此都將被調(diào)用。另外,混入對象的鉤子將在組件自身鉤子之前調(diào)用。而methods中的hello方法因?yàn)闆_突,在合并時(shí)保留組件中的hello,即優(yōu)先當(dāng)前組件的選項(xiàng),因此打印的是“hello from Home!”。

值為對象的選項(xiàng),例如 methods、components 和 directives,將被合并為同一個(gè)對象。兩個(gè)對象鍵名沖突時(shí),取組件對象的鍵值對。

可復(fù)用性

開篇提過,混入對象可成為一個(gè)可復(fù)用功能,我們在另外的組件中引入已定義的混入對象,可實(shí)現(xiàn)同樣的邏輯與功能。

如在另外一個(gè)組件About.vue使用該混入對象

<template>
  <div class="about">
    <span>This is an About page</span>
  </div>
</template>
<script>
import myMixins from "../mixins";
export default {
  name: "About",
  mixins: [myMixins]
};
</script>

混入對象中的console.log均被執(zhí)行了,實(shí)現(xiàn)了邏輯或功能的復(fù)用。

那么有個(gè)問題,如果很多個(gè)組件同時(shí)使用同一個(gè)混入對象,這時(shí)候都要重復(fù)一個(gè)步驟,就是先導(dǎo)入混入對象,然后再使用,類似如下

<script>
import myMixins from "../mixins";
export default {
  mixins: [myMixins]
};
</script>

這樣未免有點(diǎn)繁瑣,且代碼冗余,此時(shí)我們可以使用全局混入來優(yōu)化這個(gè)問題。

全局混入

混入也可以進(jìn)行全局注冊。使用時(shí)格外小心!一旦使用全局混入,它將影響每一個(gè)之后創(chuàng)建的 Vue 實(shí)例。使用恰當(dāng)時(shí),這可以用來為自定義選項(xiàng)注入處理邏輯。

在main.js中通過Vue.mixin()引入混入對象即可全局使用(作用于該Vue實(shí)例下的所有組件)

import mixin from './mixins';
Vue.mixin(mixin)

效果與在每個(gè)組件中單獨(dú)引入混入對象相同,這便是全局混入。

注意

請謹(jǐn)慎使用全局混入,因?yàn)樗鼤绊懨總€(gè)單獨(dú)創(chuàng)建的 Vue 實(shí)例 (包括第三方組件)。大多數(shù)情況下,只應(yīng)當(dāng)應(yīng)用于自定義選項(xiàng),就像上面示例一樣。推薦將其作為插件發(fā)布,以避免重復(fù)應(yīng)用混入。

到此這篇關(guān)于vue混入mixin使用特點(diǎn)的文章就介紹到這了,更多相關(guān)vue混入mixin內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解vue-cli+element-ui樹形表格(多級表格折騰小計(jì))

    詳解vue-cli+element-ui樹形表格(多級表格折騰小計(jì))

    這篇文章主要介紹了vue-cli + element-ui 樹形表格(多級表格折騰小計(jì)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • 7個(gè)適用于Vue?3的高顏值UI組件庫

    7個(gè)適用于Vue?3的高顏值UI組件庫

    這篇文章主要給大家分享介紹了7個(gè)適用于Vue?3的高顏值UI組件庫,合理利用,又或者學(xué)習(xí)借鑒都是不錯(cuò)的選擇,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Vee-validate 父組件獲取子組件表單校驗(yàn)結(jié)果的實(shí)例代碼

    Vee-validate 父組件獲取子組件表單校驗(yàn)結(jié)果的實(shí)例代碼

    vee-validate 是為 Vue.js 量身打造的表單校驗(yàn)框架,允許您校驗(yàn)輸入的內(nèi)容并顯示對應(yīng)的錯(cuò)誤提示信息。這篇文章主要介紹了Vee-validate 父組件獲取子組件表單校驗(yàn)結(jié)果 ,需要的朋友可以參考下
    2019-05-05
  • vue實(shí)現(xiàn)圖片上傳功能

    vue實(shí)現(xiàn)圖片上傳功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)圖片上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 詳解Vue注冊組件的方法

    詳解Vue注冊組件的方法

    Vue注冊組件有這幾種,分別是全局注冊、局部注冊、在模塊系統(tǒng)中注冊,這篇文章主要介紹了Vue注冊組件的方法,需要的朋友可以參考下
    2022-08-08
  • vue項(xiàng)目打包上傳github并制作預(yù)覽鏈接(pages)

    vue項(xiàng)目打包上傳github并制作預(yù)覽鏈接(pages)

    這篇文章主要介紹了vue項(xiàng)目打包上傳github并制作預(yù)覽鏈接(pages)的相關(guān)資料,需要的朋友可以參考下
    2019-04-04
  • 如何實(shí)現(xiàn)無感刷新token

    如何實(shí)現(xiàn)無感刷新token

    這篇文章主要介紹了如何實(shí)現(xiàn)無感刷新token,當(dāng)token過期的時(shí)候,刷新token,前端需要做到無感刷新token,即刷token時(shí)要做到用戶無感知,避免頻繁登錄。下面我們大家一起進(jìn)入文章看看實(shí)現(xiàn)思路即詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • vue設(shè)置路由title,但刷新頁面時(shí)title失效的解決

    vue設(shè)置路由title,但刷新頁面時(shí)title失效的解決

    這篇文章主要介紹了vue設(shè)置路由title,但刷新頁面時(shí)title失效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue?2源碼閱讀?Provide?Inject?依賴注入詳解

    Vue?2源碼閱讀?Provide?Inject?依賴注入詳解

    這篇文章主要為大家介紹了Vue?2源碼閱讀?Provide?Inject?依賴注入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Vue2.0 實(shí)現(xiàn)移動(dòng)端圖片上傳功能

    Vue2.0 實(shí)現(xiàn)移動(dòng)端圖片上傳功能

    本文主要介紹VUE2.0圖片上傳功能的實(shí)現(xiàn)。原理是通過js控制和input標(biāo)簽的方式完成這一效果,無需加載其他組件。具體實(shí)例大家大家參考下本文
    2018-05-05

最新評論

古丈县| 特克斯县| 浙江省| 南开区| 滦平县| 云阳县| 孝感市| 河津市| 孝感市| 福建省| 和平县| 磐安县| 义马市| 当涂县| 金溪县| 兰考县| 丹寨县| 武穴市| 来凤县| 沧州市| 漾濞| 普宁市| 南郑县| 龙游县| 晋州市| 昌吉市| 吴江市| 安泽县| 沁阳市| 肥城市| 易门县| 文安县| 胶南市| 龙泉市| 恩平市| 茶陵县| 辽中县| 东阿县| 胶州市| 枣阳市| 惠水县|