Vue3-04 插槽

插槽不是Vue3新增内容,但是对这块我一直有点模糊,所以重新学习一下

插槽内容

slot元素作为承载内容分发的出口,在slot插槽中可以包含任何模板代码或者其他组件

在组件中:

<!-- todo-button 组件模板 -->
<button class="btn-primary">
  <slot></slot>
</button>

在调用时:

<todo-button>
  <!-- 添加一个Font Awesome 图标 -->
  <i class="fas fa-plus"></i>
  Add todo
</todo-button>

todo-button>
    <!-- 添加一个图标的组件 -->
  <font-awesome-icon name="plus"></font-awesome-icon>
  Add todo
</todo-button>

如果组件中没有slot元素,那么组件起始标签和结束标签之间的内容都会被抛弃

渲染作用域

在插槽中使用数据时,例如

<todo-button action="delete">
  Delete a {
  { item.name }}
</todo-button>

插槽之间的内容与模板其余部分有相同的作用域,可以访问组件实例所有的Property

但是插槽不能访问<todo-button>的作用域,例如上面的例子中,是无法访问action的 ,因为action是被传递到<todo-button>中的,不要是在父级作用域中被定义的

父级模板的所有内容都是在父级作用域中编译的,子模板的所有内容都是在子作用域中定义的

备用内容

<slot>标签之间的内容会作为备用内容存在,当父组件中不提供任何插槽内容时,备用内容会被渲染,如果提供了内容,备用内容会被提供的内容所取代

具名插槽

<s

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值