Vue 插槽

插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot>表示

父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签

分为 三种类型插槽

首先第一种: 默认插槽

默认插槽是通过替换占位符达到在父组件中更改子组件中内容的效果。

// 父组件
<template>
   <Child>
   1111
   </Child>
</template>
<script>
  import Child from './Child'
  export default {

  }
</script>

// 子组件
<template>
    <div class='name'>
    <slot></slot>
  </div>
</template>

第二种: 具名插槽

给子组件中的插槽取一个名字,而父组件就可以在引用子组件的时候,根据这个名字对号入座,将相应内容填充到相应的插槽中。

<template>
    <div>
        <span>三个插槽:</span>
        <chassList>
            <template v-slot:one>
                <span>one,</span>
            </template>
            <template v-slot:two>
                <span>two</span>
            </template>
            <template v-slot:default> // 默认插槽
                <span>three</span>
            </template>
        </chassList>
    </div>
</template>
<script>
  import chassList from './chassList'
export default {
   
}
</script>
<template>
    <div>
        <span>第一个插槽</span>
        <slot name="one"></slot>
        <span>第二个插槽</span>
        <slot name="two"></slot>
        <span>第三个插槽</span>
        <slot></slot>
    </div>
</template>
 
<script>
export default {
    name: 'chassList'
}
</script>

页面输出: 两个插槽:第一个插槽one, 第二个插槽two, 第三个插槽three

第三种:作用域插槽

子组件提供给父组件的参数,该参数仅限于插槽中使用,父组件可根据子组件传过来的插槽数据来进行不同的方式展现和填充插槽内容

<template>
    <div class='father'>
        <Child v-slot='slotProps'>
                    {{ slotProps.user.lastName }}  // 22
        </Child>
  </div>
</template>
<script>
  import Child from './Child'
export default {
   
}
</script>
 
<template>
    <div class='child'>
    <slot v-bind:user='user'>
            {{ user.firstName }}  // 11
    </slot>
  </div>
</template>
<script>
    export default{
    name:"child",
    data(){
        return {
            user:{
            firstName:"11",
            lastName:"22",
          }
      }
    }
  }
</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值