前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue2笔记10 插槽

vue2笔记10 插槽

作者头像
路过君
发布2022-04-13 13:42:16
2740
发布2022-04-13 13:42:16
举报
文章被收录于专栏:路过君BLOG from CSDN

让父组件向子组件指定位置插入html结构

默认插槽

定义

代码语言:javascript
复制
<template>
  <div class="hello">
    <h3>title</h3>
    <!-- 定义一个插槽,将使用组件标签时传递的内容(innerText/innerHtml)填充到此处 -->
    <slot>默认值,使用组件标签时没有传内容则显示这个</slot>
  </div>
</template>

使用

代码语言:javascript
复制
<template>
  <div class="container">
    <HelloWorld>
      123
    </HelloWorld>
    <HelloWorld>
      <button>456</button>
    </HelloWorld>
    <HelloWorld/>
  </div>
</template>

注,通过插槽填入的元素样式通过所在的组件定义,在使用处定义scoped样式不会生效

具名插槽

代码语言:javascript
复制
<template>
  <div class="hello">
    <h3>title</h3>
    default:
    <slot>默认值,使用组件标签时没有传内容则显示这个</slot>
    slot1:
    <slot name="slot1">slot1</slot>
    slot2:
    <slot name="slot2">slot2</slot>
  </div>
</template>
代码语言:javascript
复制
<template>
  <div class="container">
    <HelloWorld>
      <!-- 只能在template上使用v-slot指令 -->
      <template v-slot:default>
        123
      </template>
      <template v-slot:slot1>
        <a href="">slot1</a>
      </template>
      <!-- 在组件上指定插槽名 -->
      <button slot="slot2">slot2</button>
    </HelloWorld>
    <HelloWorld>
      <h3>456</h3>
    </HelloWorld>
    <HelloWorld/>
  </div>
</template>

作用域插槽

数据在组件中定义,数据的呈现形式在插槽使用者中中定义

代码语言:javascript
复制
<template>
  <div class="hello">
    <!-- 将数据传递给插槽使用者 -->
    <slot :datalist="datalist"></slot>
  </div>
</template>
代码语言:javascript
复制
<template>
  <div class="container">
    <HelloWorld>
      <!-- 绑定插槽属性 -->
      <template v-slot:default="slotProps">
        <ul>
          <li v-for="(item,index) in slotProps.datalist" :key="index">{{ item }}</li>
        </ul>
      </template>
    </HelloWorld>
    <HelloWorld>
      <!-- 支持解构赋值 -->
      <template v-slot:default="{datalist}">
        <h2 v-for="(item,index) in datalist" :key="index">{{ item }}</h2>
      </template>
    </HelloWorld>
    <!-- 只有金存在默认插槽时,可以直接在组件上绑定属性 -->
    <HelloWorld v-slot="slotProps">
      <ol>
        <li v-for="(item,index) in slotProps.datalist" :key="index">{{ item }}</li>
      </ol>
    </HelloWorld>
  </div>
</template>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/02/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 默认插槽
  • 具名插槽
  • 作用域插槽
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档