vue3 | slots
一、什么是插槽
插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot>
表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>
标签,父组件填充的内容称为插槽内容。
- 子组件不提供插槽时,父组件填充失效
- 父组件无填充时,
<slot></slot>
中的备用内容会启用生效 - 父级模板里的所有内容都是在父级作用域中编译的,子模板里的所有内容都是在子作用域中编译的,互不影响
二、匿名插槽(默认插槽)
介绍
在外部组件没有提供任何内容的情况下,可以使用匿名插槽提供默认内容。
使用场景
比如
MyComponent.vue
如下:
如果外部组件提供了插槽内容,我们提供的内容会覆盖掉默认的内容
如下:
注:
插槽内容可以是任意合法的模板内容,不局限于文本。
如下:
三、具名插槽
介绍
<slot>
元素带有 name 属性的插槽被称为具名插槽。
使用场景
作用于一个组件中拥有多个插槽,而name
相当于插槽的标识,用来给各个插槽分配唯一的 ID。
MyComponent.vue
外部引用该组件
v-slot
可以简写成#
现在 <template>
元素中的所有内容都将被传递到相应的插槽。
注意:
匿名插槽也有自己的name
,只不过 name 会被隐式地命名为default
。
上面的写法等价于:
四、动态插槽名
如下
MyComponent.vue
五、作用域插槽
介绍
作用域插槽可以让父级外层组件能够访问子组件的数据,子组件向将数据提供给插槽,组件 props 传递数据的方式,子组件向插槽传递一个attributes
,父组件通过v-slot
带的值(任意命名)来获取子组件的数据。
使用场景
(一)、默认插槽
MyComponent.vue
写法一: v-slot 写在组件上
注意:
v-slot="res"
可以类比这里的函数签名,和函数的参数类似,我们也可以在 v-slot
中使用解构:
写法二: v-slot 写在 template 上
(二)、具名插槽
具名作用域插槽的工作方式也是类似的,插槽 props 可以作为 v-slot
指令的值被访问到:v-slot:name="slotProps"
。当使用缩写时是这样:
MyComponent.vue
__EOF__
本文链接:https://www.cnblogs.com/yangyukeke/p/17099694.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!