首頁 > 軟體

vue2中插槽(slot)的基本使用規範

2022-03-21 13:01:21

前言

在vue的開發過程中,我們會經常使用到vue的slot插槽元件,vue官方檔案的描述:

Vue 實現了一套內容分發的 API,這套 API 的設計靈感源自 Web Components 規範草案,將元素作為承載分發內容的出口

slot大概分為以下幾種:

基礎slot元件(匿名插槽)

匿名插槽主要使用場景並不涉及特別複雜的業務,更像是純展示元件內容

<!--子元件-->

<template>
    <span>
        我是基礎slot子元件, 父元件傳過來的值:
        <span style="color: red"><slot></slot></span>
    </span>
</template>
<!--父元件-->

<li>
    基礎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傳過來的內容</p>
        </template>
        <template v-slot:name2>
            <p>name2傳過來的內容</p>
        </template>
    </Specific>
</li>

import Specific from "./Specific.vue";

作用域插槽

作用域插槽,子元件提供資料,父元件接收子元件的值並展示和處理邏輯

<!--子元件-->

<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返回的資料:
            <span style="color: red">
                {{ childData.scopeData }}
            </span>
        </template>
    </Scope>
</li>

import Specific from "./Specific.vue";

解構插槽

解構插槽,類似在js書寫物件過程中的物件解構

{ 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>解構插槽</p>
    <Deconstru>
        <template v-slot="{ user: person }">
            父元件模板:{{ person.name }},{{ person.age }}
        </template>
    </Deconstru>
</li>

import Specific from "./Deconstru.vue";

以上例子均已上傳至開源倉庫,後續關於vue的學習筆記均會更在在該專案上,歡迎star

碼雲 https://gitee.com/lewyon/vue-note

githup https://github.com/akari16/vue-note

總結

到此這篇關於vue2中插槽(slot)的基本使用規範的文章就介紹到這了,更多相關vue2中slot使用規範內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com