[30天 Vue学好学满 DAY16] slot 插槽

slot

在子元件(内层)中预留空间,由父元件(外层)设定、分配内容。
子元件本身对slot控制权
子元件可对slot内容进行预设

Fallback Content 後备内容

子元件可对slot内容进行预设

父元件引用子元件

<HelloWorld>我会传进子元件</HelloWorld>
<HelloWorld></HelloWorld>

子元件 HelloWorld.vue

// default value
<slot>父元件没传就显示我!</slot>

起前端验证
https://ithelp.ithome.com.tw/upload/images/20210916/20129536KgbvSHdrYU.png


子元件无slot控制权

调整子元件HTML

<div>
    以下是子元件!
</div>

定义子元件showVal

return {
    showVal: '我是子元件 Val'
};

父元件引用子元件 HTML

<h1>{{ showVal }}</h1>
<HelloWorld>{{ showVal }}</HelloWorld>

定义父元件showVal

return {
    showVal: '我是子元件 Val'
};

起前端验证
https://ithelp.ithome.com.tw/upload/images/20210916/201295366uYRec5pDO.png

-> 可以看到子元件的 showVal 无资料显示


调整子元件HTML 新增插槽

以下是子元件!
<br>
<slot></slot>

起前端验证
https://ithelp.ithome.com.tw/upload/images/20210916/20129536l4VVYXmMnL.png

-> 成功将父元件直插入插槽

传递HTML

<HelloWorld><button>按我</button></HelloWorld>

具名插槽 name

多插槽时,需定义 name 属性
使用 slot template
-> 超过一个不具名插槽会产生叠加

子元件 HTML

<div>
    <h1>
      <slot name="contentH1"></slot>
    </h1>
    <h2>
      <slot></slot>
    </h2>
    <h3>
      <slot name="contentH3"></slot>
    </h3>
    <p>
      <slot></slot>
    </p>
</div>

父元件 HTML

<HelloWorld>
    <template slot="contentH1">具名h1内容</template>
    不具名h2内容
    // v-slot 只能配合 template 使用
    <template v-slot:contentH3>具名h3内容</template>
    不具名p内容
</HelloWorld>

三种写法

<template slot="contentH1">具名h1内容</template>
<template v-slot:contentH1>具名h1内容</template>
<template v-slot:contentH1>具名h1内容</template>
<template #contentH1>具名h1内容</template>

起前端验证
https://ithelp.ithome.com.tw/upload/images/20210916/20129536c2cdNe5U1h.png

-> 在插槽中无顺序性


有错误请不吝指教!
参考资料
https://vuejs.org/v2/guide
https://book.vue.tw/CH2/2-4-slots.html
https://medium.com/itsems-frontend/vue-slot-21e1ec9968f8
https://peterhpchen.github.io/VuejsQuest/basic/
https://smlpoints.com/notes-vue-slot-scope.html
感谢各路大神
/images/emoticon/emoticon31.gif


<<:  [D01]试用期从零开始的k8s

>>:  [Day13] Android - Kotlin笔记:Parcelable & Serializable 与 SafeArgs的传递

【薪资平台】从薪水来看目标公司

如果有人在看,可能会想说,蛤我都还没写履历就要看薪水了?? 就算你的考虑条件中没有薪水这一项,也可以...

Day16:[搜寻演算法]Binary search - 二分搜寻法

利用将资料切一半的方式来做搜寻,举例来说,如果要从数字1–100猜终极密码,如果采用线性搜寻法就是...

Day18:SwiftUI Picker

前言 SwiftUI Picker 可以让我们自行选择项目, 也可以选择不同的呈现方式, 这篇文章来...

EP 9: Navigation by Shell in TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...

Progressive Web App 推播通知: 网站推播通知原理开箱解密 (22)

什麽是网站推播通知 推播通知不管对 App 或是网站来说都是一种重新吸引用户来使用 App 的方法,...