国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

使用Vue的slot插槽分發父組件內容實現高度復用、更加靈活的組件(推薦)

2019-11-19 13:56:02
字體:
來源:轉載
供稿:網友

寫在前面

之前寫過一篇關于vue實現dialog會話框組件的文章//m.survivalescaperooms.com/article/139218.htm

 講到了如何實現一個vue對話框組件,其中涉及到了父組件和子組件的通信,這個不用多說,看我之前的文章就能明白,文章最后也說到了,我們可以使用slot插槽來編寫組件,slot用來分發內容到子組件中,從而實現組件的高度復用,編寫的組件更加靈活。

還是結合對話框的例子,使用slot來實現對話框組件

注冊一個名叫dialog-tip的全局組件

 Vue.component('dialog-tip', {   template: '#dialog-tip',   props:['dialogShow','message'],   data:function(){    return {     content:''    }   },   methods:{   }  });

使用templete標簽來定義這個組件

<template id="dialog-tip">  <div class="dialog_tip" v-if="dialogShow">   <div class="dialog_tip--mask"></div>   <div class="dialog_tip--content">    <div class="dialog_tip--content__txt">     <slot name="msg">請輸入1-8000之間任意整數</slot>    </div>    <div class="dialog_tip--content__btns">     <slot>      <button class="btn">確定</button>      <button class="btn">重新輸入</button>      <button class="btn">去注冊</button>     </slot>    </div>   </div>  </div> </template><template id="dialog-tip">  <div class="dialog_tip" v-if="dialogShow">   <div class="dialog_tip--mask"></div>   <div class="dialog_tip--content">    <div class="dialog_tip--content__txt">     <slot name="msg">請輸入1-8000之間任意整數</slot>    </div>    <div class="dialog_tip--content__btns">     <slot>      <button class="btn">確定</button>      <button class="btn">重新輸入</button>      <button class="btn">去注冊</button>     </slot>    </div>   </div>  </div> </template>

組件內容包括兩部分 ,一個是提示內容,一個是button按鈕,我們將要修改替換的內容使用slot包含起來,
 這樣父組件就可以分發內容到子組件里面了。

<div class="dialog_tip--content__txt">     <slot name="msg">請輸入1-8000之間任意整數</slot>    </div>    <div class="dialog_tip--content__btns">     <slot>      <button class="btn">確定</button>      <button class="btn">重新輸入</button>      <button class="btn">去注冊</button>     </slot>    </div>

除了默認插槽,還可以定義具名插槽 ,如果組件中有好幾個部分內容需要替換,我們可以為它定義一個name,例如:

<slot name="msg">請輸入1-8000之間任意整數</slot>

這樣在使用組件的時候,指定slot的name ,就會將這一部分內容替換掉,而不會替換其他的插槽內容

<p slot="msg">請輸入正確手機號</p>

使用定義好的dialog組件

<dialog-tip message="hello" :dialog-show="dialogShow.tip3">   <p slot="msg">請輸入正確手機號</p>   <button class="btn" @click="closeDialogTip('tip3')">確定</button>  </dialog-tip>  <dialog-tip message="hello" :dialog-show="dialogShow.tip4">   <p slot="msg">抱歉,沒有此用戶,請核實后輸入</p>   <button class="btn" @click="closeDialogTip('tip4')">重新輸入</button>   <button class="btn" @click="reg">去注冊</button>  </dialog-tip>

如果不指定slot的名稱,默認dialog-tip標簽里面的內容會替換子組件中使用slot包含的內容部分,例如以上

使用slot指定了它的名稱來替換子組件中的對應的slot部分,而沒有使用slot指定名稱的內容會默認將子組件中
 沒有定義具名插槽的部分內容替換掉。

需要注意的是,如果dialog-tip標簽里沒有定義需要分發的內容,那么子組件中會顯示默認的插槽內容

關于更多的slot用法,請移步https://cn.vuejs.org/v2/guide/components-slots.html

最后

效果圖

總結

以上所述是小編給大家介紹的使用Vue的slot插槽分發父組件內容實現高度復用、更加靈活的組件,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 井冈山市| 姜堰市| 民县| 社旗县| 安阳县| 崇礼县| 小金县| 乌兰察布市| 长丰县| 新邵县| 淅川县| 沧源| 香港 | 扶沟县| 汉寿县| 揭阳市| 玉林市| 福安市| 嘉义县| 遂溪县| 杨浦区| 阿拉善右旗| 汨罗市| 九江市| 临武县| 清水河县| 通海县| 竹北市| 肇州县| 连州市| 永定县| 海阳市| 华安县| 宜丰县| 高唐县| 嘉义县| 天门市| 香格里拉县| 老河口市| 凤庆县| 勐海县|