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

Vue mixins詳解與使用技巧

 更新時間:2024年09月21日 14:42:20   作者:前端技術(shù)棧  
Vue mixins提供了一個非常靈活的方式來分發(fā)Vue組件中的可復(fù)用功能,通過全局混入和局部混入,可以將預(yù)定義的方法、數(shù)據(jù)等混合到Vue組件中,這種技術(shù)可以簡化代碼,提高開發(fā)效率,并允許在不同組件間共享功能

Vue mixins詳解與使用

mixins

混合 (mixins) 是一種分發(fā) vue 組件中可復(fù)用功能的非常靈活的方式。

混合對象可以包含任意組件選項(xiàng)。

當(dāng)組件使用混合對象時,所有混合對象的選項(xiàng)將被混入該組件本身的選項(xiàng)。

mixins理解

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

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

單純組件引用:

  • 父組件 + 子組件 >>> 父組件 + 子組件

mixins:

  • 父組件 + 子組件 >>> new父組件有點(diǎn)像注冊了一個vue的公共方法,可以綁定在多個組件或者多個Vue對象實(shí)例中使用。
  • 另一點(diǎn),類似于在原型對象中注冊方法,實(shí)例對象即組件或者Vue實(shí)例對象中,仍然可以定義相同函數(shù)名的方法進(jìn)行覆蓋,有點(diǎn)像子類和父類的感覺。

作用:

用簡單的話去概括就是一種分發(fā)vue組件中的功能可以復(fù)用一個技術(shù),使用這個技術(shù)我們可以把需要復(fù)用的內(nèi)容封裝成一個vue組件,方便下次使用方便

使用方法

首先在src中去創(chuàng)建一個自己的文件夾,然后把要封裝的內(nèi)容放入到這個文件夾,方便后續(xù)的調(diào)用

let mymixin={
     methods:{
         handleBtn(){
             alert('封裝的內(nèi)容已經(jīng)觸發(fā)!')
         }
     }
}
export default mymixin

全局混入

全局混入就是我們可以把封裝好的這個組件在main.js中全局注冊,方便在任何地方使用

import myMixins from "./mixins/index.js"
// 全局混入
Vue.mixin(myMixins)

局部混入

也就是引用的復(fù)用內(nèi)容只能在當(dāng)前組件中生效

<template>
     <button @click="handleBtn">點(diǎn)我觸發(fā)</button>
</template>
<script>
import myMixins from '@/mixin.js'
export default {
     mixins:[myMixins]
}
</script>
<style>
</style>

這樣就實(shí)現(xiàn)了一個簡單的混入,減少代碼的復(fù)用性,大大加強(qiáng)了開發(fā)效率,你就可以安心的考慮業(yè)務(wù),而不是不停的敲代碼

mixins的使用

方法的復(fù)用

html

<div id="app">
     <child></child>
     <kid></kid>
</div>

js

Vue.component('child',{
     template:`<h1 @click="foo">child component</h1>`,
     methods:{
         foo(){
             console.log('Child foo()'+this.msg++)
         }
     }
})
Vue.component('kid',{
     template:`<h1 @click="foo">kid component</h1>`,
     methods:{
         foo(){
             console.log('Kid foo()'+this.msg++)
         }
     }
})

在借助mixins之前,在兩個不同的組件的組件中調(diào)用foo方法,需要重復(fù)定義,倘若方法比較復(fù)雜,代碼將更加冗余。

若借助mixins,則變得十分簡單:

let mixin={
     data(){
         return{
             msg:1
         }
     },
     methods:{
         foo(){
             console.log('hello from mixin!----'+this.msg++)
         }
     }
}
var child=Vue.component('child',{
         template:`<h1 @click="foo">child component</h1>`,
         mixins:[mixin]
})
Vue.component('kid',{
         template:`<h1 @click="foo">kid component</h1>`,
         mixins:[mixin]
})

雖然此處,兩個組件用可以通過this.msg引用mixins中定義的msg,但是,小編嘗試過,兩個組件引用的并不是同一個msg,而是各自創(chuàng)建了一個新的msg。

如果在組件中定義相同的data,則此處會引用組件中的msg,而非mixins中的。

方法的覆蓋

如果在引用mixins的同時,在組件中重復(fù)定義相同的方法,則mixins中的方法會被覆蓋。

var child=Vue.component('child',{
     template:`<h1 @click="foo">child component</h1>`,
     mixins:[mixin],
     methods:{
         foo(){
     console.log('Child foo()'+this.msg++)
         }
     }
})

此時,若單擊h1標(biāo)簽,則在控制臺中打印"Child foo() 1" 3、合并生命周期此時,若單擊h1標(biāo)簽,則在控制臺中打印"Child foo() 1"

合并生命周期

let mixin={
     mounted(){
         console.log('mixin say hi')//先輸出
     },
     data(){
         return{
             msg:1
         }
     },
     methods:{
         foo(){
             console.log('mixin foo()'+this.msg++)
         }
     }
}
let vm=new Vue({
     el:"#app",
     data:{
         msg: 2
     },
     mounted: function(){
         console.log('app say hi')//后輸出
     },
     methods:{
         foo(){
             console.log('Parent foo()'+this.msg)
         }
     }
})

通過上面的介紹,現(xiàn)在對mixins有了比較深入的了解,在設(shè)計(jì)復(fù)雜組件時是很有必要的。

總結(jié)

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

相關(guān)文章

  • vue?cli3配置image-webpack-loader方式

    vue?cli3配置image-webpack-loader方式

    這篇文章主要介紹了vue?cli3配置image-webpack-loader方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue?指令版富文本溢出省略截取示例詳解

    vue?指令版富文本溢出省略截取示例詳解

    這篇文章主要為大家介紹了vue?指令版富文本溢出省略截取示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 基于vue實(shí)現(xiàn)swipe分頁組件實(shí)例

    基于vue實(shí)現(xiàn)swipe分頁組件實(shí)例

    本篇文章主要介紹了基于vue實(shí)現(xiàn)swipe分頁組件實(shí)例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • VUE引入DataV報(bào)錯解決實(shí)戰(zhàn)記錄

    VUE引入DataV報(bào)錯解決實(shí)戰(zhàn)記錄

    在使用vue開發(fā)大屏?xí)r,發(fā)現(xiàn)了一個很好用的可視化組件庫DataV,下面這篇文章主要給大家介紹了關(guān)于VUE引入DataV報(bào)錯解決的實(shí)戰(zhàn)記錄,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • 利用Vue3實(shí)現(xiàn)拖拽定制化首頁功能

    利用Vue3實(shí)現(xiàn)拖拽定制化首頁功能

    vue3正式版已經(jīng)發(fā)布大半年了,咱也得緊跟時代潮流,vue3帶來的很多改變,下面這篇文章主要給大家介紹了關(guān)于利用Vue3實(shí)現(xiàn)拖拽定制化首頁功能的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • vue.js模仿京東省市區(qū)三級聯(lián)動的選擇組件實(shí)例代碼

    vue.js模仿京東省市區(qū)三級聯(lián)動的選擇組件實(shí)例代碼

    選擇省市區(qū)是我們大家在填寫地址的時候經(jīng)常會遇到的一個功能,下面這篇文章主要給大家介紹了關(guān)于利用vue.js模仿實(shí)現(xiàn)京東省市區(qū)三級聯(lián)動選擇組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • vue使用element-resize-detector監(jiān)聽元素寬度變化方式

    vue使用element-resize-detector監(jiān)聽元素寬度變化方式

    這篇文章主要介紹了vue使用element-resize-detector監(jiān)聽元素寬度變化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • vue el-table實(shí)現(xiàn)遞歸嵌套的示例代碼

    vue el-table實(shí)現(xiàn)遞歸嵌套的示例代碼

    本文主要介紹了vue el-table實(shí)現(xiàn)遞歸嵌套的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能(完整代碼)

    vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能(完整代碼)

    驗(yàn)證碼功能在我們的身邊用處極廣,今天小編給大家分享基于vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能,感興趣的朋友跟隨小編一起看看吧
    2019-12-12
  • 精讀《Vue3.0 Function API》

    精讀《Vue3.0 Function API》

    這篇文章主要介紹了精讀《Vue3.0 Function API》,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評論

运城市| 铁岭市| 凤庆县| 新蔡县| 青川县| 雅江县| 延津县| 化隆| 浮梁县| 柏乡县| 泰安市| 鄂伦春自治旗| 余姚市| 桐庐县| 南靖县| 衡南县| 同心县| 鄂尔多斯市| 东乌珠穆沁旗| 浙江省| 宝山区| 阿尔山市| 余干县| 兴海县| 白朗县| 射阳县| 鹿泉市| 浪卡子县| 南华县| 谷城县| 忻州市| 庐江县| 广南县| 通辽市| 南安市| 米泉市| 金乡县| 金华市| 赤峰市| 公主岭市| 嫩江县|