欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
单个 Slot
 
在子组件内使用特殊的<slot>元素就可以为这个子组件添加一个 slot (插槽),在父组件模板里,插入在子组件标签内的所有内容将替代子组件的<slot>标签及它的内容.示例代码如下:
 
子组件
 
<template>
 
 <div>
 
    <slot>
 
        <p>如果父组件没用插入内容,我将作为默认出现</p>
 
    </slot>
 
</div>
 
</template>
 
<script>
 
export default {
 
  name: "sonSlot",
 
}
 
</script>
 
父组件
 
<template>
 
  <div>
 
    <son-slot>
 
      <p>分发的内容</p>
 
      <p>更多分发的内容</p>
 
    </son-slot>
 
  </div>
 
</template>
 
<script>
 
import SonSlot from "./SonSlot"
 
export default {
 
  name: "parentSlot",
 
}
 
</script>
 
注意:子组件<slot>内的备用内容,它的作用域是子组件本身.
 
具名 Slot
 
给 <slot> 元素指定一个 name 后可以分发多个内容,具名 Slot 可以与单个 Slot 共存,例如下面的示例:
 
<template>
 
<div class="component">
 
    <div class="header">
 
        <slot name="header"></slot>
 
    </div>
 
    <div class="main">
 
        <slot></slot>
 
    </div>
 
    <div class="footer">
 
        <slot name="footer"></slot>
 
    </div>
 
</div>
 
</template>
 
子组件内声明了3个 <slot> 元素,其中在<div class="main">内的<slot> 没用使用 name 特性,它将作为默认 slot 出现,父组件没有使用 slot 特性的元素与内容都将出现在这里.
 
如果没有指定默认的匿名 slot, 父组件内多余的内容片段都将被抛弃.
 
上例最终渲染后的结果为:
 
<div id="app">
 
        <div class="container">
 
            <div class="header">
 
                <h2>标题</h2>
 
            </div>
 
            <div class="main">
 
                <p>正文内容</p>
 
                <p>更多的正文内容</p>
 
            </div>
 
            <div class="footer">
 
                <div>底部信息</div>
 
            </div>
 
        </div>
 
    </div>
 
<template>
 
<div>
 
  <son-name-slot>
 
    <template v-slot:header>
 
      这是 header 部分
 
    </template>
 
    <template>
 
      哈哈哈哈啊哈哈啊哈哈哈 this is main 
 
    </template>
 
    <template v-slot:footer>
 
      这是 footer 部分
 
    </template>
 
  </son-name-slot>
 
</div>
 
</template>
 
<script>
 
import SonNameSlot from "./SonNameSlot"
 
export default {
 
  name: "parentNameSlot",
 
}
 
</script>

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h63519.shtml