vue插槽

54 阅读1分钟

插槽基本用法

组件

<div>
    <slot name="header"></slot>
</div>
<div>
    <slot></slot>    
</div>

使用

<ksd-card>
    <template v-slot:header>    
      <h3>统计用户</h3>
    </template>
    <template v-slot:default>
        <div>我是一个内容</div>
    </template>
</ksd-card><ksd-card>
    <template slot="header">    
      <h3>统计用户</h3>
    </template>
    <template slot="default">
        <div>我是一个内容</div>
    </template>
</ksd-card><ksd-card>
    <template #header>  
      <h3>统计用户</h3>
    </template>
    <template #default>
        <div>我是一个内容</div>
    </template>
</ksd-card>

vue2作用域插槽

组件
<span>
  <slot v-bind:user="user"></slot>
</span>
使用
<current-user>
  <template v-slot:default="slotProps">
    {{ slotProps.user.firstName }}
  </template>
</current-user>

简写

组件
<span>
  <slot v-bind="user"></slot>
</span>
使用
<current-user>
  <template v-slot:default="slotProps">
    {{ slotProps.firstName }}
  </template>
</current-user>

详细用法

组件

<template>
    <div>
        <slot v-bind:cuser="user"></slot>
    </div>
</template>
<script>
    data(){
        return {
            user:{id:1,usrename:"飞哥"}
        }
    },
</script>

使用

<ksd-box>
    <template v-slot:default="slotProps">
        {{slotProps.cuser.id}}
    </template>
</ksd-box>

多个插槽的情况

组件

<div>
    <slot v-bind:cname="username"></slot>
    <slot name="header" v-bind="user"></slot>
</div>
<script>
    data(){
        return {
           user:{id:1,usrename:"飞哥"},
           username:"张三"
        }
    },
</script>

使用

 <ksd-box>
     <template v-slot:default="slotProps">
        {{slotProps.cname}}
     </template>
     <template  v-slot:header="slotProps">
        {{slotProps}}
     </template>
</ksd-box>