文档
官网:https://v2.cn.vuejs.org/v2/guide/components-slots.html
尚硅谷视频:https://www.bilibili.com/video/BV1Zy4y1K7SH?p=102
默认插槽
我的理解就是:子组件留了一块可以在父组件里面配置的片段
使用:
在子组件定义一个插槽:

在父组件中告诉子组件用什么替换<slot></slot>

具名插槽
具名插槽可以让我们在子组件中定义多个插槽
使用:
在子组件中定义插槽,并用name属性区分不同的插槽

一个不带 name 的 <slot> 出口会带有隐含的名字“default”。
在父组件中通过v-slot:xx(其中,xx是子组件中slot的属性值) 向指定插槽插入内容:

中间的两个会放在没有name属性的slot中
注意:
v-slot 只能添加在 <template>上,如果想要放在其他地方,可以用slot属性,下图展示了两种写法:

需要注意的是,slot的属性值写在双引号中!
另外,上图中两个只能用其中的一个,如果两个同时使用,则只会展示第二个!
作用域插槽
用于父组件需要用到子组件中的数据。

例如:
子组件中定义了一个插槽:

父组件想要修改slot处显示的值,但是user数据在子组件中,父组件无法直接获得;
我们可以通过在子组件中绑定属性来向父组件传值!
例如下图中,我们把子组件中user通过user属性传给插槽的使用者(父组件)

父组件中取值:

值得注意的是,取到的值是一个对象,它的key是子组件定义的属性,value才是真正传的值,因此,上图中通过slotProps.user来取子组件传过来的user
也就是:

本文详细介绍了Vue中的插槽概念,包括默认插槽、具名插槽及作用域插槽的使用方法,帮助开发者更好地理解如何在子组件中预留可由父组件定制的内容区域。
780

被折叠的 条评论
为什么被折叠?



