寫在前面
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設、成都做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務子長,10多年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575
之前寫過一篇關于vue實現(xiàn)dialog會話框組件的文章https://www.jb51.net/article/139218.htm
講到了如何實現(xiàn)一個vue對話框組件,其中涉及到了父組件和子組件的通信,這個不用多說,看我之前的文章就能明白,文章最后也說到了,我們可以使用slot插槽來編寫組件,slot用來分發(fā)內容到子組件中,從而實現(xiàn)組件的高度復用,編寫的組件更加靈活。
還是結合對話框的例子,使用slot來實現(xiàn)對話框組件
注冊一個名叫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之間任意整數(shù)</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之間任意整數(shù)</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包含起來,
這樣父組件就可以分發(fā)內容到子組件里面了。
<div class="dialog_tip--content__txt"> <slot name="msg">請輸入1-8000之間任意整數(shù)</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之間任意整數(shù)</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標簽里沒有定義需要分發(fā)的內容,那么子組件中會顯示默認的插槽內容
關于更多的slot用法,請移步https://cn.vuejs.org/v2/guide/components-slots.html
最后
效果圖
總結
以上所述是小編給大家介紹的使用Vue的slot插槽分發(fā)父組件內容實現(xiàn)高度復用、更加靈活的組件,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
網(wǎng)站欄目:使用Vue的slot插槽分發(fā)父組件內容實現(xiàn)高度復用、更加靈活的組件(推薦)
標題網(wǎng)址:http://aaarwkj.com/article38/gppcpp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、網(wǎng)站策劃、面包屑導航、關鍵詞優(yōu)化、商城網(wǎng)站、Google
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)