vue2中插槽(slot)的基本使用規(guī)范
前言
在vue的開(kāi)發(fā)過(guò)程中,我們會(huì)經(jīng)常使用到vue的slot插槽組件,vue官方文檔的描述:
Vue 實(shí)現(xiàn)了一套內(nèi)容分發(fā)的 API,這套 API 的設(shè)計(jì)靈感源自 Web Components 規(guī)范草案,將元素作為承載分發(fā)內(nèi)容的出口
slot大概分為以下幾種:
基礎(chǔ)slot組件(匿名插槽)
匿名插槽主要使用場(chǎng)景并不涉及特別復(fù)雜的業(yè)務(wù),更像是純展示組件內(nèi)容
<!--子組件--> <template> ?? ?<span> ?? ??? ?我是基礎(chǔ)slot子組件, 父組件傳過(guò)來(lái)的值: ?? ??? ?<span style="color: red"><slot></slot></span> ?? ?</span> </template>
<!--父組件--> <li> ? ? 基礎(chǔ)slot組件(匿名插槽):<Base>這是一段父組件傳過(guò)來(lái)的文字</Base> </li> import Base from "./Base.vue";
具名插槽
具名插槽,需要在父組件和子組件約定插槽名稱
<!--子組件--> <template> ?? ?<span> ?? ??? ?<span style="color: red"> ?? ??? ??? ?<slot name="name1"></slot> ?? ??? ??? ?<slot name="name2"></slot> ?? ??? ?</span> ?? ?</span> </template>
<!--父組件--> <li> ? ? <p>具名插槽:</p> ? ? <Specific> ? ? ?? ?<template v-slot:name1> ? ? ?? ??? ?<p>name1傳過(guò)來(lái)的內(nèi)容</p> ? ? ?? ?</template> ? ? ?? ?<template v-slot:name2> ? ? ?? ??? ?<p>name2傳過(guò)來(lái)的內(nèi)容</p> ? ? ?? ?</template> ? ? </Specific> </li> import Specific from "./Specific.vue";
作用域插槽
作用域插槽,子組件提供數(shù)據(jù),父組件接收子組件的值并展示和處理邏輯
<!--子組件--> <template> ?? ?<span> ?? ??? ?<span> ?? ??? ??? ?<slot name="scopeName" v-bind:scopeData="age"></slot> ?? ??? ?</span> ?? ?</span> </template> <script lang="ts"> import { Component, Vue, Prop } from "vue-property-decorator"; @Component export default class Scope extends Vue { ?? ?private age: Number = 23; } </script>
<!--父組件--> <li> ?? ?<p>作用域插槽</p> ?? ?<Scope> ?? ??? ?<template v-slot:scopeName="childData"> ?? ??? ??? ?作用域子組件slot返回的數(shù)據(jù): ?? ??? ??? ?<span style="color: red"> ?? ??? ??? ??? ?{{ childData.scopeData }} ?? ??? ??? ?</span> ?? ??? ?</template> ?? ?</Scope> </li> import Specific from "./Specific.vue";
解構(gòu)插槽
解構(gòu)插槽,類似在js書寫對(duì)象過(guò)程中的對(duì)象解構(gòu)
{ data:{ username:1 } }
<!--子組件--> <template> ?? ?<span> ?? ??? ?<p> ?? ??? ??? ?<slot v-bind:user="user"></slot> ?? ??? ?</p> ?? ?</span> </template> <script lang="ts"> import { Component, Vue, Prop } from "vue-property-decorator"; @Component export default class Deconstru extends Vue { ?? ?private user: Object = { ?? ??? ?name: "zhangsan", ?? ??? ?age: 23, ?? ?}; } </script>
<!--父組件--> <li> ?? ?<p>解構(gòu)插槽</p> ?? ?<Deconstru> ?? ??? ?<template v-slot="{ user: person }"> ?? ??? ??? ?父組件模板:{{ person.name }},{{ person.age }} ?? ??? ?</template> ?? ?</Deconstru> </li> import Specific from "./Deconstru.vue";
以上例子均已上傳至開(kāi)源倉(cāng)庫(kù),后續(xù)關(guān)于vue的學(xué)習(xí)筆記均會(huì)更在在該項(xiàng)目上,歡迎star
碼云 https://gitee.com/lewyon/vue-note
githup https://github.com/akari16/vue-note
總結(jié)
到此這篇關(guān)于vue2中插槽(slot)的基本使用規(guī)范的文章就介紹到這了,更多相關(guān)vue2中slot使用規(guī)范內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在vue上使用cesium開(kāi)發(fā)三維地圖的詳細(xì)過(guò)程
這篇文章主要給大家介紹了關(guān)于在vue上使用cesium開(kāi)發(fā)三維地圖的詳細(xì)過(guò)程,Cesium是一個(gè)強(qiáng)大的JavaScript庫(kù),支持三維地理信息展示,并提供了豐富的地理空間數(shù)據(jù)可視化功能,需要的朋友可以參考下2023-12-12vue項(xiàng)目在線上服務(wù)器訪問(wèn)失敗原因分析
這篇文章主要介紹了vue項(xiàng)目在線上服務(wù)器訪問(wèn)失敗原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08vue中$refs, $emit, $on, $once, $off的使用詳解
這篇文章主要介紹了vue中$refs, $emit, $on, $once, $off的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05$router.push()中通過(guò)path跳轉(zhuǎn)和通過(guò)name跳轉(zhuǎn)區(qū)別解析
今天在路由跳轉(zhuǎn)傳參時(shí)發(fā)現(xiàn)params傳參接收到的總是為空,才發(fā)現(xiàn)通過(guò)path和name傳參是有區(qū)別的,這篇文章主要介紹了$router.push()中通過(guò)path跳轉(zhuǎn)和通過(guò)name跳轉(zhuǎn)有什么區(qū)別,需要的朋友可以參考下2023-11-11vue3使用xgPalyer實(shí)現(xiàn)截圖功能的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何在vue3中使用xgPalyer截圖功能,以及自定義插件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02