首页IT科技vue3插槽(【VUE前进之路】插槽的使用)

vue3插槽(【VUE前进之路】插槽的使用)

时间2025-06-21 00:18:39分类IT科技浏览3761
导读:目录...

目录

1.什么是插槽

2.插槽的使用 

3.v-slot 指令

4.具名插槽

5.具名插槽的简写形式

6.作用域插槽

7.解构插槽 Prop

作者简介:一名前端萌新            ,前来进行VUE的前进之路

个人主页:大熊李子的主页🐻

1.什么是插槽

插槽(slot)是 vue 为组件的封装者提供的能力            。允许开发者在封装组件时                  ,把不确定的            、希望由用户 指定的部分定义为插槽                  。

2.插槽的使用 

在封装组件时      ,可以通过 元素定义插槽         ,从而为用户预留内容占位符      。

// 子组件 <template> <div class="left-container"> <h3>Left 组件</h3> <hr /> <p>子组件的第一个 p 标签</p> <!-- 通过 slot 标签                  ,为用户预留内容占位符(插槽) --> <slot></slot> <p>子组件最后一个 p 标签</p> </div> </template> // 父组件 <template> <div class="app-container"> <h1>App 根组件</h1> <hr /> <div class="box"> <!-- 渲染 Left 组件和 Right 组件 --> <!-- 在使用组件时         ,为插槽指定具体的内容 --> <Left> <p>用户自定义内容</p> </Left> </div> </div> </template>

3.v-slot 指令

vue 官方规定:每一个 slot 插槽      ,都要有一个 name 名称                  ,如果省略了 slot 的 name 属性            ,则有一个 默认名称叫做 default         。 默认情况下   ,在使用组件的时候                  ,提供的内容都会被填充到名字为default 的插槽之中如果要把内容填充到指定名称的插槽中               ,需要使用 v-slot: 这个指令, v-slot: 指令后面要跟插槽的名字                  。

// 父组件 <Left> <template v-slot:default> <p>用户自定义内容</p> </template> </Left> // 子组件 <template> <div class="left-container"> <h3>Left 组件</h3> <hr /> <p>子组件的第一个 p 标签</p> <!-- 通过 slot 标签               ,为用户预留内容占位符(插槽) --> <slot name="default"></slot> <p>子组件最后一个 p 标签</p> </div> </template>

v-slot:指令不能直接用在元素身上                  ,必须用在template 标签上 template这个标签   ,它是一个虚拟的标签            ,只起到包裹性质的作用                  ,但是      ,不会被渲染为任何实 质性的html元素

注:没有预留插槽的内容会被丢弃         ,如果在封装组件时没有预留任何 插槽                  ,则用户提供的任何自定义内容都会被丢弃         。

// 子组件 <template> <div class="left-container"> <h3>Left 组件</h3> <hr /> <p>子组件的第一个 p 标签</p> <!-- 封装组件时         ,没有预留任何插槽 --> <p>子组件最后一个 p 标签</p> </div> </template> // 父组件 <template> <div class="app-container"> <h1>App 根组件</h1> <hr /> <div class="box"> <!-- 自定义的内容会被丢弃 --> <Left> <p>用户自定义内容</p> </Left> </div> </div> </template>

4.具名插槽

如果在封装组件时需要预留多个插槽节点      ,则需要为每个 插槽指定具体的 name 名称      。这种带 有具体名称的插槽叫做“具名插槽            ”                  。

<template> <div class="article-container"> <!-- 文章标题 --> <div class="header-box"> <slot name="title"></slot> </div> <!-- 文章内容 --> <div class="content-box"> <slot name="content"></slot> </div> <!-- 文章作者 --> <div class="footer-box"> <slot name="author"></slot> </div> </div> </template>

在向具名插槽提供内容的时候                  ,我们可以在一个 元素上使用 v-slot 指令            ,并以 v-slot 的参 数的形式提供其名称

// 父组件中 <Article> <template #title> <h3>静夜思</h3> </template> <template #content> <div> <p>我见青山多妩媚   ,</p> <p>料青山见我应如是            。</p> </div> </template> <template #author> <div>作者:大熊</div> </template> </Article>

5.具名插槽的简写形式

<tbody> <!-- 下面的slot 是一个作用域插槽--> <slot v-for="item in 1 ist" :user="item"></slot> </tbody>

6.作用域插槽

可以使用 v-slot: 的形式                  ,接收作用域插槽对外提供的数据

<my-com-3> <!-- 1.接收作用域插槽对外提供的数据--> <template v-slot:default=" scope"> <tr> <!-- 2.使用作用域插槽的数据--> <td> {{ scope }}</td> </tr> </ template> </my-com-3>

7.解构插槽 Prop

作用域插槽对外提供的数据对象               ,可以使用解构赋值简化数据的接收过程

<myone> <!-- v-slot: 可以简写成# --> <!-- 作用域插槽对外提供的数据对象,可以通过                  ”解构赋值"简化接收的过程--> <template #default="{user}"> <tr> <td> {{user.id}}</td> <td> {{user.name}}</td> <td> {{user.state}}</td> </tr> </ template> </myone>

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
制作地图软件哪个最好(秀一个PySide做的软件,网站地图制作工具 (Sitemap Creator))