当前位置: 首页 > news >正文

Vue2/Vue3-插槽(全)

一、插槽的定义

vue实现了一套内容分发的Api,将<slot>元素作为承载内容分发

二、插槽的注意事项

父组件模板的内容只能访问父组件的作用域,子组件的模板只能访问子组件的作用域。

也就是说插槽的内容可以访问父组件的数据作用域,因为插槽内容本身就是在父组件的模板中定义的,插槽内容是无法访问子组件中的数据,vue模板中的表达式只能访问其定义时在所处的作用域,这个和js的词法作用域规则是一样的。

三、普通插槽

// 父组件
import chacao from "./chacao.vue"
components:{ chacao }<chacao>hahaja<span>fffff</span>
</chacao>// 子组件
<div><slot></slot> // 所有内容将会显示到这
</div>

四、后备内容

有时为一个插槽设置具体的后备(也就是默认)内容是很有用的,它只会在没有被提供内容的时候被我渲染

// 父组件:提供了内容,子组件显示save
<submit-button>save
</submit-button>// 父组件: 无内容,子组件显示submit
<submit-button>
</submit-button>// 子组件
<button type="submit"><slot>submit</slot>
</button>

五、具名插槽

父组件的三种写法

import chacao from "./chacao"
components:{chacao}// 第一种使用: v-slot + template
<chacao><template v-slot:one>one</template><template v-slot:two>two</template><div> three </div>
</chacao>// 第二种使用: # + template, v-slot: 等同于#,是一种简写方式
<chacao><template #one>one</template><template #two>two</template><div> three </div>
</chacao>// 第三种使用: slot(没有v-) +具体标签(不能是template)
<chacao><div slot="one">one</div><div slot="two">two</div><div> three </div>
</chacao>

子组件

<template><div><slot name="one"></slot> // one<slot name="two"></slot> // two<slot></slot> // three</div>
</template>

六、作用域插槽

某些场景下,插槽的内容想要同时使用父组件和子组件内的数据,要做到这一点,我们需要来让子组件在渲染的时候将一部分的数据提供给插槽

(1)只有默认插槽

// 父组件,只有默认插槽,也可以在组件标签上使用解构赋值v-slot="{text,wyz}"
<chacao v-slot="slotProps"><div>{{slotProps.text}}-{{slotProps.wyz}}</div>
</chacao>// 子组件
<slot text="a" wyz="wyz"></slot>

(2)只有具名插槽

// 父组件
<chacao>// 普通使用<template #one="proplot">      {{proplot.text}}</template>// 解构赋值<template #two="{wyz}">      {{wyz}}</template>
</chacao>// 子组件
<slot name="one" text="wyz"></slot>
<slot name="two" wyz="wyz"></slot>

(3)同时具有默认和具名插槽

// 父组件
<chacao><template #one="{text}">{{text}}</template><template #two="{wyz}">{{wyz}}</template><template #default="{defaultName}">{{defaultName}}</template>
</chacao>// 子组件
<slot name="one" text="wyz"></slot>
<slot name="two" wyz="wyz"></slot>
<slot defaultName="66-88"></slot>

相关文章:

  • C++ KMP字符串 ||暴力算法 和 KMP算法模板题解法
  • 作业三详解
  • STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)
  • MR实战:词频统计
  • git本地创建分支并推送到远程关联起来
  • LLM之RAG实战(十三)| 利用MongoDB矢量搜索实现RAG高级检索
  • 【Unity嵌入Android原生工程】
  • java基础之Java8新特性-Stream(流)
  • 弹窗里el-cascader下拉框脱离文档流的解决办法
  • BLE Mesh蓝牙组网技术详细解析之Model Layer模型层(八)
  • MySQL-数据库概述
  • HTML----JavaScript操作对象BOM对象
  • how2heap-2.23-09-chunk_extend_and_overlapping
  • ReactNative 常见问题及处理办法(加固混淆)
  • AI原生应用开发“三板斧”亮相WAVE SUMMIT+2023
  • android图片蒙层
  • canvas 高仿 Apple Watch 表盘
  • CSS 提示工具(Tooltip)
  • css系列之关于字体的事
  • Git 使用集
  • gops —— Go 程序诊断分析工具
  • maven工程打包jar以及java jar命令的classpath使用
  • 百度地图API标注+时间轴组件
  • 闭包--闭包之tab栏切换(四)
  • 复习Javascript专题(四):js中的深浅拷贝
  • 再次简单明了总结flex布局,一看就懂...
  • 7行Python代码的人脸识别
  • 带你开发类似Pokemon Go的AR游戏
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (二)丶RabbitMQ的六大核心
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (十一)图像的罗伯特梯度锐化
  • (转)大道至简,职场上做人做事做管理
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net core控制台应用程序初识
  • .NET 材料检测系统崩溃分析
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET企业级应用架构设计系列之技术选型
  • .net实现客户区延伸至至非客户区
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • /etc/motd and /etc/issue
  • @JsonFormat与@DateTimeFormat注解的使用
  • @RestController注解的使用
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [Angular 基础] - 指令(directives)
  • [BJDCTF2020]The mystery of ip1
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总
  • [git] windows系统安装git教程和配置
  • [HCTF 2018]WarmUp (代码审计)