Vue插槽

 

 

默认插槽

src/App.vue

<template><div class="container"><Category title="美食"><img src="https://s3.ax1x.com/2021/01/16/srJlq0.jpg" alt=""></Category><Category title="游戏"><ul><li v-for="(g, index) in games" :key="index">{{ g }}</li></ul></Category><Category title="电影"><video src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" controls></video></Category></div>
</template><script>
import Category from './components/Category'
export default {name: 'App',components: { Category },data() {return {foods: ['火锅', '烧烤', '小龙虾', '烧烤'],games: ['红色警戒', '穿越火线', '劲舞团', '超级玛丽'],films: ['《教父》', '《拆弹专家》', '《你好·李焕英》', '《尚硅谷》']}}
}
</script><style>
.container {display: flex;justify-content: space-around;
}
img{width: 100%;
}video{width: 100%;
}
</style>

src/components/Category.vue

<template><div class="category"><h3>{{ title }}分类</h3><!-- 定义一个插槽(挖个坑,等着组件的使用者进行填充 --><slot>我是一些默认值,当使用者没有传递具体结构时,我会出现</slot></div>
</template><script>
export default {name: 'Category',props:['title']
}
</script>
<style>.category{background-color: lightblue;width: 200px;height: 300px;}h3{text-align: center;background-color: orange;}
</style>

具名插槽

src/App.vue

<template><div class="container"><Category title="美食"><img slot="center" src="https://s3.ax1x.com/2021/01/16/srJlq0.jpg" alt=""><a slot="footer" href="http://www.atguigu.com">更多美食</a></Category><Category title="游戏"><ul slot="center"><li v-for="(g, index) in games" :key="index">{{ g }}</li></ul><div class="foot" slot="footer"><a href="http://www.atguigu.com">单机游戏</a><a href="http://www.atguigu.com">网络游戏</a></div></Category><Category title="电影"><video slot="center" src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" controls></video><!-- <div slot="footer"><div class="foot"><a href="http://www.atguigu.com">经典</a><a href="http://www.atguigu.com">热门</a><a href="http://www.atguigu.com">推荐</a></div><h4 class="foot">欢迎前来观影</h4></div> --><template v-slot:footer><div class="foot"><a href="http://www.atguigu.com">经典</a><a href="http://www.atguigu.com">热门</a><a href="http://www.atguigu.com">推荐</a></div><h4 class="foot">欢迎前来观影</h4></template></Category></div>
</template><script>
import Category from './components/Category'
export default {name: 'App',components: { Category },data() {return {foods: ['火锅', '烧烤', '小龙虾', '烧烤'],games: ['红色警戒', '穿越火线', '劲舞团', '超级玛丽'],films: ['《教父》', '《拆弹专家》', '《你好·李焕英》', '《尚硅谷》']}}
}
</script><style>
.container,
.foot {display: flex;justify-content: space-around;
}img {width: 100%;
}video {width: 100%;
}
</style>

src/components/Category.vue

<template><div class="category"><h3>{{ title }}分类</h3><!-- 定义一个插槽(挖个坑,等着组件的使用者进行填充 --><slot name="center">我是一些默认值,当使用者没有传递具体结构时,我会出现1</slot><slot name="footer">我是一些默认值,当使用者没有传递具体结构时,我会出现2</slot></div>
</template><script>
export default {name: 'Category',props:['title']
}
</script>
<style>.category{background-color: lightblue;width: 200px;height: 300px;}h3{text-align: center;background-color: orange;}
</style>

注意:只有<template v-slot:footer></template>可以使用v-slot:footer等价于<div class="footer"></div>

作用域插槽

src/components/Category.vue

<template><div class="category"><h3>{{ title }}分类</h3><!-- 定义一个插槽(挖个坑,等着组件的使用者进行填充 --><slot :games="games">我是一些默认值,当使用者没有传递具体结构时,我会出现</slot></div>
</template><script>
export default {name: 'Category',props: ['title'],data() {return {games: ['红色警戒', '穿越火线', '劲舞团', '超级玛丽'],}}
}
</script>
<style>
.category {background-color: lightblue;width: 200px;height: 300px;
}h3 {text-align: center;background-color: orange;
}
</style>

src/App.vue

<template><div class="container"><Category title="游戏"><template scope="atguigu">{{atguigu}}<ul><li v-for="(g, index) in atguigu.games" :key="index">{{ g }}</li></ul></template></Category><Category title="游戏"><template scope="{games}"><ol><li v-for="(g, index) in games" :key="index">{{ g }}</li></ol></template></Category><Category title="游戏"><template slot-scope="{games}"><h4 v-for="(g, index) in games" :key="index">{{ g }}</h4></template></Category></div>
</template><script>
import Category from './components/Category'
export default {name: 'App',components: { Category },}
</script><style scoped>
.container,
.foot {display: flex;justify-content: space-around;
}img {width: 100%;
}video {width: 100%;
}h4{text-align: center;
}
</style>

总结:插槽的使用者往插槽里面塞东西,但是作用域插槽,有一种感觉数据流逆着过去了 

{{atguigu}}是个对象

默认插槽与具名插槽:根据父组件的数据生成结构传递给子组件

作用域插槽:父组件根据子组件传递的数据生成dom 传递给子组件

解构赋值{games}解释:let {games}={'games':[数据]} ,这样直接用games就相当于数据

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/20433.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

得物自建 DTS 平台的技术演进 | 精选

0 前言 DTS是数据传输平台(Data Transfer Platform的缩写) 随着得物App的用户流量增长&#xff0c;业务选择的数据库越来越多样化&#xff0c;异构数据源之间的数据同步需求也逐渐增多。为了控制成本并更好地支持业务发展&#xff0c;我们决定自建DTS平台。本文主要从技术选型、…

两组表单看懂MySQL的多表查询

第一组表单信息 1、查询每个部门的所属员工 mysql> SELECT name,GROUP_CONCAT(ename) persons-> FROM dept3 d-> LEFT JOIN emp3 e-> ON d.deptno e.dept_id-> GROUP BY d.deptno-> UNION -> SELECT name,GROUP_CONCAT(ename) persons-> FROM dept3 …

分层解耦-IOCDI引入

目录 分层解耦 如何解除耦合 控制反转&#xff08;IOC&#xff09; 依赖注入&#xff08;DI&#xff09; Bean对象 分层解耦 内聚&#xff1a;软件中各个功能模块内部的功能联系耦合&#xff1a;衡量软件中各个层/模块之间的依赖、关联程度软件设计原则&#xff1a;高内聚…

开源Cillium项目为容器提供强大的网络功能

试验性的开源Cillium项目使用Linux内核的一项现有特性&#xff0c;为容器提供高速、强大的网络功能。一项名为Cilium的开源项目试图基于Linux内核中所用的技术&#xff0c;为容器提供一种新的网络方法。 试验性的开源Cillium项目使用Linux内核的一项现有特性&#xff0c;为容器…

HP Laser 136nw打印机与win10实现Wifi直连

HP Laser 136nw打印机与win10实现Wifi直连 HP Laser 136nw打印机设置HP Smart HP Laser 136nw打印机设置 打开打印机WIFI开关&#xff0c;使其他设备可以搜索到 查看打印机设备名称&#xff0c;用于设备搜索 查看打印机WIFI密钥&#xff0c;用于windows与打印机直连 根据…

手写JAVA线程池

前言 手写一个简单的java线程池&#xff1a;重点关注&#xff0c;如何确保一直有运行的线程&#xff1f;如何确保线程消费提交的任务信息&#xff1f;。一直保存有运行的线程底层使用的是死循环。使用消息队列确保信息的提交和消费。消息队列使用先进先出原则。 步骤 线程池…

iOS开发 - 系统自带框架实现扫一扫功能

iOS 扫一扫 利用系统自带框架实现扫一扫功能 一 项目配置 扫一扫功能相机和相册权限&#xff0c;在info.plist中设置询问用户是否允许访问的权限。 info.plist加入NSCameraUsageDescription、NSPhotoLibraryUsageDescription、NSPhotoLibraryAddUsageDescription <key&g…

spring 详解二 IOC(Bean xml配置及DI)

配置列表 Xml配置 功能描述 <bean id"" class""></bean> Bean的id&#xff0c;配置id会转为Bean名称和不配就是全限定类名 <bean name"" ></bean> Bean的别名配置&#xff0c;存储在Factory的aliasMap中通过别名也…

操作系统Linux—day01

编程 网页 软件 网站项目 知识点&#xff1a; 前端页面&#xff1a;HTML css JavaScript JQuery VUE 数据库&#xff1a;Oracle MySQL 服务器&#xff1a;服务器的操作系统Linux Http://115.159.96.174:8090/EasyBuy/ www.baidu.com>http://180.101.49.12/ 后台技术…

几何伙伴行泊一体解决方案入选浦东人工智能十大创新技术

2023年7月8日&#xff0c;在全球瞩目的世界人工智能大会&#xff08;WAIC&#xff09;浦江东岸分会场&#xff0c;主题为“引领未来&#xff0c;赋能焕新”的“2023世界人工智能大会浦东论坛”隆重举办。浦东新区作为全国首个人工智能创新应用先导区&#xff0c;正打造上海人工…

electron的(maximize)最大化方法会导致头部白色横条以及四周大黑边

参考文章&#xff1a;https://www.w3cways.com/2505.html 感谢这位博主 我在使用win.maximize()后发现应用程序虽然最大化了&#xff0c;但是四周和顶部有一定宽度的黑边白边&#xff0c;在百度一段时间后没有发现其他人有这个问题 &#x1f614;唉 必现步骤&#xff1a; 只要…

前端理解的HTTP缓存(作用、缓存策略、缓存控制机制、应用)

一、HTTP缓存有什么作用&#xff1f; 缓存是为了重复使用而被存储的&#xff0c;可以减少浏览器和服务器之间通信的次数、降低网络延迟、加速页面加载、提高用户体验性等。不但能使网页打开速度更快&#xff0c;还能减少服务器的压力。 二、 浏览器的缓存策略有哪些&#xff1…