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

Vue3中slot插槽的几种使用实践

【1】默认插槽

父组件

<Category title="今日美食城市"><img :src="imgUrl" alt="">
</Category>

子组件

<div class="category"><h2>{{title}}</h2><slot>默认内容</slot>
</div>

父组件中Category 组件标签内的东西将会呈现在子组件slot的位置(进行替换)。

【2】具名插槽

也就是插槽会按照名字进行内容的替换。

父组件

// v-slot:s2 表示插槽名字为s2 ,简写方式为 #s2
<Category><template v-slot:s2><ul><li v-for="g in games" :key="g.id">{{ g.name }}</li></ul></template><template v-slot:s1><h2>热门游戏列表</h2></template>
</Category>

子组件

<template><div class="category"><slot name="s1">默认内容1</slot><slot name="s2">默认内容2</slot></div>
</template>

【3】作用域插槽

理解: 数据在组件的自身,但根据数据生成的结构需要组件的使用者来决定。(新闻数据在News组件中,但使用数据所遍历出来的结构由App组件决定)

子组件

<template><div class="game"><h2>游戏列表</h2><slot :youxi="games" x="哈哈" y="你好"></slot></div>
</template><script setup lang="ts" name="Game">import {reactive} from 'vue'let games = reactive([{id:'asgytdfats01',name:'英雄联盟'},{id:'asgytdfats02',name:'王者农药'},{id:'asgytdfats03',name:'红色警戒'},{id:'asgytdfats04',name:'斗罗大陆'}])
</script>

父组件,params会拿到子组件的数据的数据{"youxi":[],"x":"哈哈","y":"你好"}

<template><div class="father"><h3>父组件</h3><div class="content"><Game><template v-slot="params"><ul><li v-for="y in params.youxi" :key="y.id">{{ y.name }}</li></ul></template></Game><Game><template v-slot="params"><ol><li v-for="item in params.youxi" :key="item.id">{{ item.name }}</li></ol></template></Game>// 这里直接解构youxi ,写法更简洁   <template v-slot="{youxi}">
//#default 其实就是 v-slot:default ,也就是插槽默认名字为default<Game><template #default="{youxi}"><h3 v-for="g in youxi" :key="g.id">{{ g.name }}</h3></template></Game></div></div>
</template><script setup lang="ts" name="Father">import Game from './Game.vue'
</script>

另外,作用域插槽也是可以有名字的,如下所示 v-slot:s1="params" ,s1表示插槽名字,params表示数据。

<Game><template v-slot:s1="params"><ol><li v-for="item in params.youxi" :key="item.id">{{ item.name }}</li></ol></template>
</Game>
http://www.lryc.cn/news/439417.html

相关文章:

  • SSH工具 MobaXterm的使用与快捷配置
  • git 远程分支同步本地落后的有冲突的分支
  • 如何基于Java解析国密数字证书
  • java实现系统文件管理
  • pytorch快速入门(一)—— 基本工具及平台介绍
  • 『功能项目』怪物的有限状态机【42】
  • 【C++】模板进阶:深入解析模板特化
  • Python数据分析-世界上最富有的1000人
  • CSS中隐藏滚动条的同时保留滚动功能
  • 我的标志:奇特的头像
  • 中国空间计算产业链发展分析
  • DAY14信息打点-JS 架构框架识别泄漏提取API 接口枚举FUZZ 爬虫插件项目
  • TS - tsconfig.json 和 tsconfig.node.json 的关系,如何在TS 中使用 JS 不报错
  • revisiting拉普拉斯模板
  • 深入分析计算机网络性能指标
  • pyflink 安装和测试
  • 《网络故障处理案例:公司网络突然中断》
  • JavaSE:9、数组
  • 【裸机装机系列】2.kali(ubuntu)-裸机安装kali并进行磁盘分区-2024.9最新
  • 解决:Vue 中 debugger 不生效
  • Mac笔记本上查看/user/目录下的文件的几种方法
  • 工程师 - ACPI和ACPICA的区别
  • 一文快速上手-create-vue脚手架
  • 笔记整理—内核!启动!—kernel部分(7)rcs文件和登录部分与密码解析
  • 朴素贝叶斯 (Naive Bayes)
  • 高德2.0 多边形覆盖物无法选中编辑
  • 时序最佳入门代码|基于pytorch的LSTM天气预测及数据分析
  • 85-MySQL怎么判断要不要加索引
  • 车载软件架构 --- SOA设计与应用(中)
  • MATLAB求解微分方程和微分方程组的详细分析