vue 中<slot>插槽的使用

用简单的话来说slot就是一个占位符,就是说当我不往slot里面传递任何数据的时候,slot是不会展示的,最基本的就是保留共性

共四种情况,代码如下

父组件中

<template>
  <div class="myBox">
    <!-- 子组件不具名插槽 -->
    <my-bar>
      <!-- 必须要是用template模板,此模板中内容就是slot插槽展示内容 -->
      <template>
        <p>我是父组件的slot内容,在子组件中展示</p>
      </template>
    </my-bar>
    <!-- 子组件不具名插槽并且传参 如果设置 v-slot:default="slotData" 就表示此插槽不是具名插槽并且slotData就是不具名插槽传递的参数集合或者数据集合-->
    <my-bar>
      <!-- 必须要是用template模板,此模板中内容就是slot插槽展示内容 -->
      <template v-slot:default="slotData">
        <p>{{ slotData.name }}</p>
      </template>
    </my-bar>
    <!-- 子组件具名插槽 -->
    <my-bar>
      <!-- 使用v-slot:name 来绑定子组件的slot插槽 -->
      <template v-slot:mySlot>
        <p>我是父组件的slot内容,并且是具名插槽,在子组件中展示</p>
      </template>
    </my-bar>
    <!-- 子组件具名插槽 -->
    <my-bar>
      <!-- 使用v-slot:name="slotData" 来绑定子组件的slot插槽 slotData就是不具名插槽传递的参数集合或者数据集合-->
      <template v-slot:mySlot="slotData">
        <p>{{ slotData.name  }}</p>
      </template>
    </my-bar>
  </div>
</template>

子组件中

<template>
  <div class="clildrenSlot">
    <!-- 不具名插槽 -->
    <slot :slotData="slotData"> </slot>
    <!-- 具名插槽 -->
    <slot name="mySlot" :slotData="slotData"> </slot>
  </div>
</template>
<script>
export default {
  data() {
    return {
      slotData: { name: '我是插槽' },
    };
  },
};
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容