vue3_作用域插槽


讲解作用域插槽

作用域插槽

可以传递数据的插槽,就是叫做作用域插槽;

子组件可以将数据,回传,给父组件;

父组件可以决定,这些回传的数据,以何种结构和外观,在子组件内部展示;

案例准备

image-20240929140208749

这是子组件;

image-20240929140258871

这是父组件;

image-20240929140624334

在父组件当中制造数据;

引导线

将父组件当中的todos传递给子组件,然后在子组件当中用列表来展示出来;

image-20240929140759527

这是父组件;给子组件传递了数据;

image-20240929140859890

子组件当中使用defineProps来接收父亲传递过来的数据;

image-20240929140937257

从这张图可以看到,确实是接收到了父亲传递过来的数据;

引导线

子组件接收到了父组件的数据,那么我想要让子组件将这些数据,用列表的方式展示出来;

如果这些待办是做了,那么文字颜色就是绿色的;

如果这些待办是没有做的,那么文字颜色就是红色的;

image-20240929153758757

数据先列表展示出来;

image-20240929161344912

这是展示出来的效果;

image-20240929161446418

image-20240929161457790

具体的效果就是如上所示的;

作用域插槽

image-20240929161711768

作用域插槽的意思,就是可以把数据回传给父组件

<ul>
    <li v-for="(item, index) in todos" :key="item.id">
    	<slot :$row="item"></slot>
    </li>
</ul>

上面的代码中,:$row这个可不是props,这是作用域插槽的语法

image-20240929162152248

image-20240929162221003

子组件通过作用域插槽,给父组件回传了数据;

那么父组件要接收这些数据;

那么父组件用todo这个变量接收,用template、v-slot;

接收后打印效果如上;

回传的数据整体是一个对象;

这个key就是回传的属性的名字,右侧就是回传的数据对象;

image-20240929162508051

image-20240929162557547

image-20240929162804556

image-20240929163620961

同样是可以达成之前的效果;

分析

子组件返回数据后,父组件让你用什么结构展示,你就是什么结构展示;

外观也是父组件决定的;

为什么要讲解作用域插槽呢?

因为我们要开发的项目当中,将会用到element-plus里面的ui组件;

经常会用到作用域插槽。

总结

vue3的组件通信手段包括有:

  • props
  • custom event
  • event bus
  • v-model
  • useAttrs
  • ref$parent
  • provide-inject
  • pinia
  • slot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值