作用域插槽

假设子组件 list

<div>  
	<div v-for="item in list" :key="item">{{ item }}</div>
</div>

//子组件data
data() {
	return {
		list: [1, 2, 3]
	}
}

父组件中使用子组件:

<list />

展示效果为:

1
2
3

这个很好理解吧~但是如果有这么个业务需求:父组件使用子组件时不一定要使用 div ,而是有时需要使用 span 标签,即子组件中的 v-for 循环出的数要用什么 html 标签所包裹由父组件来决定,该怎么办呢?此时应使用作用域插槽,如下所示👇

子组件:

<div>
	<slot v-for="item in list" :key="item" :item="item"/> //父组件没办法调用到子组件中的item
</div>                                                    //所以这里通过:item="item"的方式传递

//子组件data
data() {
	return {
		list: [1, 2, 3]
	}
}

父组件:

<list v-slot="slotProps"> //父组件通过v-slot="slotProps"接受子组件传过来的参数,是一个对象
	<span>{{ slotProps.item }}</span>
</list>

//可以通过解构的方式简化代码
<list v-slot="{ item }">
	<span>{{ item }}</span>
</list>

展示效果:

123

总结: 当子组件渲染的内容需要父组件决定时,可以使用作用域插槽,能够让父组件调用到子组件中的数据。项目中用得不多,但是在写一些Vue的插件时会用得到,需要了解一下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大杯美式不加糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值