vue2中插槽(slot)的基本使用規(guī)范
前言
在vue的開發(fā)過程中,我們會經(jīng)常使用到vue的slot插槽組件,vue官方文檔的描述:
Vue 實現(xiàn)了一套內(nèi)容分發(fā)的 API,這套 API 的設(shè)計靈感源自 Web Components 規(guī)范草案,將元素作為承載分發(fā)內(nèi)容的出口
slot大概分為以下幾種:
基礎(chǔ)slot組件(匿名插槽)
匿名插槽主要使用場景并不涉及特別復(fù)雜的業(yè)務(wù),更像是純展示組件內(nèi)容
<!--子組件--> <template> ?? ?<span> ?? ??? ?我是基礎(chǔ)slot子組件, 父組件傳過來的值: ?? ??? ?<span style="color: red"><slot></slot></span> ?? ?</span> </template>
<!--父組件--> <li> ? ? 基礎(chǔ)slot組件(匿名插槽):<Base>這是一段父組件傳過來的文字</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傳過來的內(nèi)容</p> ? ? ?? ?</template> ? ? ?? ?<template v-slot:name2> ? ? ?? ??? ?<p>name2傳過來的內(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書寫對象過程中的對象解構(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";
以上例子均已上傳至開源倉庫,后續(xù)關(guān)于vue的學(xué)習(xí)筆記均會更在在該項目上,歡迎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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在vue上使用cesium開發(fā)三維地圖的詳細(xì)過程
這篇文章主要給大家介紹了關(guān)于在vue上使用cesium開發(fā)三維地圖的詳細(xì)過程,Cesium是一個強大的JavaScript庫,支持三維地理信息展示,并提供了豐富的地理空間數(shù)據(jù)可視化功能,需要的朋友可以參考下2023-12-12vue中$refs, $emit, $on, $once, $off的使用詳解
這篇文章主要介紹了vue中$refs, $emit, $on, $once, $off的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05$router.push()中通過path跳轉(zhuǎn)和通過name跳轉(zhuǎn)區(qū)別解析
今天在路由跳轉(zhuǎn)傳參時發(fā)現(xiàn)params傳參接收到的總是為空,才發(fā)現(xiàn)通過path和name傳參是有區(qū)別的,這篇文章主要介紹了$router.push()中通過path跳轉(zhuǎn)和通過name跳轉(zhuǎn)有什么區(qū)別,需要的朋友可以參考下2023-11-11vue3使用xgPalyer實現(xiàn)截圖功能的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何在vue3中使用xgPalyer截圖功能,以及自定義插件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02