中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Vue.js中怎么實(shí)現(xiàn)一個(gè)復(fù)用組件

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Vue.js中怎么實(shí)現(xiàn)一個(gè)復(fù)用組件,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的嘉祥網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

首先看看quiList.vue

//quiList.vue
<template>
 <div class="qui-list">
 <span class="list-tips">{{tipsText}}</span>
 <qui-btn v-on:btnClickEvent="btnClickEvent" :msg=msg class="small"></qui-btn>
 </div>
</template>

<script>
 import quiButton from '../components/quiButton.vue'
 export default{
 props:{
  msg: {
  default: '下載'
  },
  tipsText: {
  default: '默認(rèn)的文案'
  }
 },
 components: {
  'qui-btn': quiButton
 },
 methods:{
  btnClickEvent:function(){
   alert('按鈕點(diǎn)擊事件')
  }
 }
 }
</script>

上面的知識(shí)點(diǎn)基本上就是我們之前學(xué)過的,只不過記住quiList本身是一個(gè)組件,而在這個(gè)組件里面,我們又引入了按鈕組件quiButton,也就是組件內(nèi)引用組件,實(shí)際上就是組件的嵌套,注意到這里:msg=msg的使用,這里冒號(hào)表示綁定的是一個(gè)變量msg,然后這個(gè)屬性通過props暴露出去(本身在按鈕中就暴露了msg給列表組件使用),借用下面一張圖理解下:

Vue.js中怎么實(shí)現(xiàn)一個(gè)復(fù)用組件

至于點(diǎn)擊事件,也是我們之前學(xué)習(xí)過的事件的綁定。現(xiàn)在引入一個(gè)新問題,是否有一個(gè)參數(shù),可以決定列表組件的右側(cè)是放置按鈕組件呢?還是箭頭組件。

動(dòng)態(tài)組件

Vue中提供了一些特定關(guān)鍵字:is和特定的結(jié)構(gòu)<component>來生成動(dòng)態(tài)組件,讓我們修改下script里面的內(nèi)容先:

<script>
 import quiButton from '../components/quiButton.vue'
 import quiArrow from '../components/quiArrow.vue'
 export default{
 props:{
  msg: {
  default: '下載'
  },
  tipsText: {
  default: '默認(rèn)的文案'
  },
  currentView:{
  default: 'qui-btn'
  }
 },
 components: {
  'qui-btn': quiButton,
  'qui-arrow': quiArrow
 },
 methods: {
  clickEvent: function () {

  }
 }
 }
</script>

首先我們先Import多一個(gè)箭頭組件,在components中添加一個(gè)自定義標(biāo)簽‘qui-arrow',注意到我們多了一個(gè)currentView的自定義屬性,默認(rèn)值是qui-btn,現(xiàn)在再看看template標(biāo)簽里面寫什么:

<template>
 <div class="qui-list">
 <span class="list-tips">{{tipsText}}</span>
 <component :is="currentView" v-on:btnClickEvent="clickEvent" :msg=msg class="small" keep-alive></component>
 </div>
</template>

我們把qui-btn標(biāo)簽去掉了,取而代之的是一個(gè)component標(biāo)簽,這是Vue自帶的一個(gè)標(biāo)簽,可以把它當(dāng)作一個(gè)容器,這個(gè)容器可以用來裝按鈕,也可以用來裝箭頭。決定這個(gè)容器裝的是哪個(gè)組件的關(guān)鍵代碼在于:is="currentView",當(dāng)currentView的值為qui-btn的時(shí)候,這個(gè)容器就是按鈕組件,當(dāng)它是qui-arrow的時(shí)候,就是箭頭組件。而我們剛才給這個(gè)變量定義的默認(rèn)值是qui-btn。

keep-alive關(guān)鍵字保持這個(gè)組件在內(nèi)存中是常駐的,由于動(dòng)態(tài)組件可能需要?jiǎng)討B(tài)切換,這樣保持組件活躍可以減少組件變化時(shí)候的內(nèi)存消耗。

可以看到我們的component上還保留著按鈕的點(diǎn)擊事件和msg信息,這些沒有關(guān)系,只要箭頭組件中不出現(xiàn)同樣的變量就不會(huì)發(fā)生沖突。

<qui-list tipsText="自定義文案,默認(rèn)右邊是按鈕" msg="彈層"></qui-list>
<qui-list v-on:btnClickEvent="test"></qui-list>
<qui-list ref="child1" tipsText="最右邊是箭頭" currentView="qui-arrow"></qui-list>

使用列表組件的時(shí)候,只需要給暴露出來的currentView指定一個(gè)值,就可以決定右側(cè)是按鈕還是箭頭了。注意最后一個(gè)qui-list上有一個(gè)ref的屬性,這個(gè)屬性代表組件集合,當(dāng)頁面中有很多組件的時(shí)候,可以通過幾種方法來獲取對(duì)應(yīng)的某個(gè)組件的信息:

console.log(this.$children[0].msg);//通過數(shù)組獲取
console.log(this.$refs.child1.msg);//通過對(duì)象集合獲取

其實(shí)關(guān)于動(dòng)態(tài)組件,不一定要用:is+component來實(shí)現(xiàn),在Vue中有一個(gè)指令叫做v-if / v-else / v-else-if,統(tǒng)稱判斷指令,配合展示指令v-show,可以根據(jù)指定的值來決定對(duì)應(yīng)的組件是否應(yīng)該展示,另外這種做法我不展示了,就當(dāng)做一個(gè)作業(yè)吧,有興趣的還是建議實(shí)戰(zhàn)一下,畢竟我們也只是教大家入門學(xué)習(xí),后面還是希望大家能夠自己去擴(kuò)展學(xué)習(xí)。

生命周期

這里簡(jiǎn)單講一下什么是組件的生命周期,上面我們通過refs來獲取組件對(duì)象的信息,那么在什么時(shí)候或者說哪個(gè)時(shí)機(jī)點(diǎn)去做這件事呢,組件從引用到調(diào)用到銷毀(比較少操作)有以下幾個(gè)關(guān)鍵回調(diào)函數(shù):

<script>
 export default {
 components: {
  'qui-list': quiList
 },
 beforeCreate:function(){},//組件實(shí)例化之前
 created:function(){},//組件實(shí)例化了
 beforeMount:function(){},//組件寫入dom結(jié)構(gòu)之前
 mounted:function(){//組件寫入dom結(jié)構(gòu)了
  console.log(this.$children);
  console.log(this.$refs);
 },
 beforeUpdate:function(){},//組件更新前
 updated:function(){},//組件更新比如修改了文案
 beforeDestroy:function(){},//組件銷毀之前
 destroyed:function(){}//組件已經(jīng)銷毀
 }
</script>

所以要想使用refs的內(nèi)容,就需要在組件寫入dom之后才能開始調(diào)用哦!

我還需要學(xué)什么

目前為止,我們?nèi)恼乱呀?jīng)學(xué)了大部分的關(guān)于組件和路由的知識(shí),當(dāng)然這并不是Vue的全部,只是相對(duì)于其他的知識(shí)點(diǎn),這些可以算是一個(gè)墊腳石,看懂了這些,對(duì)后面其他API的應(yīng)用,幫助很大。下面我列舉一些其他的,后續(xù)大家可以去官網(wǎng)查看資料的一些關(guān)鍵點(diǎn),其實(shí)都不難,只要有一些小小的項(xiàng)目demo實(shí)踐,你會(huì)發(fā)現(xiàn)Vue也不過如此。

過渡

過渡其實(shí)就是CSS3動(dòng)畫,transition這些,只是寫CSS3變成好像在寫JS一樣,有點(diǎn)類似于greenSock的一些思想。

指令

目前為止我們學(xué)習(xí)了一些常用指令,像v-on,v-bind,v-for,還有幾個(gè)常用的像剛才提到的判斷指令和v-show指令,還有v-model指令(主要用于input等表單組件)。

上述就是小編為大家分享的Vue.js中怎么實(shí)現(xiàn)一個(gè)復(fù)用組件了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標(biāo)題名稱:Vue.js中怎么實(shí)現(xiàn)一個(gè)復(fù)用組件
網(wǎng)站網(wǎng)址:http://m.2m8n56k.cn/article6/jssgog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管App設(shè)計(jì)標(biāo)簽優(yōu)化品牌網(wǎng)站設(shè)計(jì)做網(wǎng)站用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
主站蜘蛛池模板: 视频一区中文字幕 | 亚洲 欧美 国产 日韩 制服 bt | 国产一区亚洲二区三区毛片 | 国内成人自拍视频 | 欧美日本俄罗斯一级毛片 | 久久久久久久国产视频 | 欧美成年黄网站色高清视频 | 国产在线91精品入口首页 | 亚洲国语| 国产一区二区三区精品久久呦 | 中国三级毛片 | 国产精品欧美亚洲 | аⅴ资源天堂8在线 | 黄网免费 | 国产一区二区三区免费在线观看 | 国产一级毛片卡 | 欧美视频一区在线 | 欧美成人午夜毛片免费影院 | 99日韩| 久热香蕉精品视频在线播放 | 欧美日韩视频一区三区二区 | 成人免费小视频 | 欧美日韩一级大片 | 一区二区三区中文国产亚洲 | 精品久久久久久乐 | 日韩视频中文字幕 | 最新国产一区二区精品久久 | 二区三区在线观看 | 综合91| 欧美一区永久视频免费观看 | 亚洲精品手机在线 | 亚洲网站www | 欧美成人三级大全 | 欧美不卡视频在线观看 | 成人国产精品一区二区网站 | 欧美在线一二三区 | 欧美一区二区三区在线视频 | 呦女精品视频 | 国产精品一区二区在线观看 | 国产成人福利夜色影视 | 午夜一级成人 |