VUE--插槽slot(将父级的模块片段插入到子级中)

组件可以接收任意类型的JS值作为props,但我们想要为子组件传递一些模板片段,并在子组件中进行渲染时,此时可以采用插槽slot来实现

简单来说,插槽时组件内留一个或多个插槽的位置,供组件传递对应的模板代码(传递任意HTML的结构),插槽的存在使得组件变的更为灵活


 Slot与Props的比较

使用props的方式传递以下的模版片段:

<div><h3>父级标题</h3><p>父级内容</p>
</div>

Props的方式

// Parent.vue<template><h2>父组件</h2><Child :title="父级标题" :content="父级内容"/>
</template><script>import Child from "./Child.vue";export default {data(){return{}},components:{Child}}
</script>

// Child.vue<template><h2>子组件</h2><div><h3>{{title}}</h3><p>{{content}}</p></div>
</template><script>export default {data(){return{}},props:["title","content"]}
</script>

使用插槽slot的方式

// Parent.vue<template><h2>父组件</h2><Child><div><h3>父级标题</h3><p>父级内容</p></div></Child>
</template><script>import Child from "./Child.vue";export default {data(){return{}},components:{Child}}
</script>
// Child.vue<template><h2>子组件</h2><slot></slot>
</template><script>export default {data(){return{}}}
</script>

通过props和slot的比较,可看出当模块结果过于复杂时,插槽slot是更优选

插槽默认内容

当父级未提供任何内容给子级的情况下,子级可为插槽指定默认内容

// Parent.vue 中的 template块
<template><h2>父级</h2><Child />
</template>
// Child.vue 中 的template块
<template><h2>子级</h2><slot>默认内容</slot>
</template>

具名插槽

具名插槽:即带名字的插槽,当需要在组件内预留多个插槽的位置时,则需为插槽定义名字,指定插入的位置

注:

为具名插槽传入内容时:

对于父级组件,需要使用一个含 v-slot 指令的 <template>元素,并将目标插槽的名字传给该指令;(其中,v-slot可将其简写为#   (v-bind可简写为:) )

对于子级组件,<slot>元素需要一个特殊的属性  name ,用于为各个插槽分配唯一的ID,以确定每一处要渲染的内容

// Parent.vue<template><Child><template v-slot:header><p>Header</p></template><template #main><p>Main</p></template></Child>
</template>

v-slot:header 与 #header 是等价的 

//Child.vue<template><slot name="header"></slot><slot name="main"></slot>
</template>

 

具名插槽传数据(子父组件数据交互的实现)

通过插槽的方式,将子组件中的内容进行显示

// Parent.vue
<template><Child><template v-slot:header="slotProps"><p>{{ currentMsg }}--{{ slotProps.content }}</p></template><template #main="slotProps"><p>{{ slotProps.content1}}</p></template></Child>
</template><script>import Child from "./Child.vue";export default {data(){return{currentMsg:"父级组件的内容"}},components:{Child}}
</script>
// Child.vue
<template><slot name="header" :content="contentMsg"></slot><slot name="main" :content1="contentMsg1"></slot>
</template><script>export default {data(){return{contentMsg:"子级组件的内容",contentMsg1:"子级组件的内容1",}}}
</script>

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

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

相关文章

【不用找素材】ECS 游戏Demo制作教程(1) 1.15

一、项目设置 版本&#xff1a;2022.2.0f1 &#xff08;版本太低的话会安装不了ECS插件&#xff09; 模板选择3D URP 进来后移除URP&#xff08;因为并不是真的需要&#xff0c;但也不是完全不需要&#xff09; Name: com.unity.entities.graphics Version: 1.0.0-exp.8 点击…

非科班转码的秋招复盘:地理信息科学GIS专业到后端研发、软件开发

本文介绍地理信息科学&#xff08;GIS&#xff09;专业的2024届应届生&#xff0c;在研三上学期期间&#xff0c;寻找后端研发、软件开发等IT方向工作的非科班转码秋招情况。 首先&#xff0c;这篇文章一开始写于2023年年底&#xff0c;当时为了参加一个征文活动&#xff0c;所…

DApp:去中心化的革命与挑战

DApp&#xff08;去中心化应用&#xff09;是一种基于区块链技术的应用程序&#xff0c;与传统的中心化应用程序不同&#xff0c;DApp具有去中心化、透明、不可篡改等特性。本文将介绍DApp的前世今生&#xff0c;以及它的优势和未来发展。 DApp的前世可以追溯到区块链技术的出现…

【实战】K8S部署Redis集群代理Predixy

文章目录 前言技术积累为什么要在redis集群前面加个predixy代理&#xff1f;这样做的好处有哪些&#xff1f;常用代理配置网络存储 实战构建predixy镜像并部署下载predixy源码编译构建镜像创建K8S配置文件predixy-configmap并执行网络储存PV与PVC部署predixy-deployment 测试代…

CMake TcpServer项目 生成静态库.a / 动态库.so

CMake 实战构建TcpServer项目 静态库/动态库-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/135608829?spm1001.2014.3001.5501 在这篇博客的基础上&#xff0c;我们把头文件放在include里边&#xff0c;把源文件放在src里边&#xff0c;重新构建 hehedali…

IPFoxy运营干货|谷歌广告Google Ads建立广告需要注意什么?

投放谷歌广告需要多少个步骤和什么准备工作&#xff0c;本文将来讲述&#xff0c;主要分5个内容&#xff1a;一、投放前竞对研究&#xff1b;二、投放前广告账户设置&#xff1b;三、建立广告系列&#xff1b;四、建立广告组&#xff1b;五、广告长期策略。接下来我们来开始建立…

AI视觉训练环境-【2】开发客户端搭建

本文介绍搭建一套简单的AI视觉训练环境的过程,作者也是刚开始接触机器视觉,现将学习过程中的搭建过程梳理下来分享给大家。创作过程实属不易,如不喜欢请轻轻绕过,如有建议无比欢迎,只愿我们共同进步。 训练环境 1.概述 开发环境基于yolov5进行训练演练,开发人员通过PyCha…

Gazebo的模型下载。

git clone zouxu634866/gazebo_modelshttps://gitee.com/zouxu6348660/gazebo_models.git&#xff0c;并完成路径配置。 &#xff08;本文提供了gitee下载&#xff0c;国外的Github下载较慢。&#xff09;

16位单片机单片机S1C17153

16位单片机单片机 .16KB ROM / 2KB内存 * S1C17653对于程序开发很有用。 .产生具有内置振荡器的操作时钟。 - OSC3B振荡器电路&#xff1a;2MHz/1MHz/500kHz&#xff08;类型&#xff09;内部振荡器电路 -OSC1无振荡器电路&#xff1a;32.768 kHz&#xff08;类型&#xf…

【C语言】linux内核ipoib模块 - ipoib_intf_init

一、ipoib_intf_init函数定义 int ipoib_intf_init(struct ib_device *hca, u8 port, const char *name,struct net_device *dev, struct ipoib_dev_priv *priv) {struct rdma_netdev *rn netdev_priv(dev);int rc;priv->ca hca;priv->port port;rc rdma_init_netde…

微信小程序(四)页面跳转

注释很详细&#xff0c;直接上代码 上一篇 新增内容 1.相对路径页面跳转 2. 绝对路径页面跳转 index.wxml <!-- navigator是块级元素&#xff0c;占一整行 --> <!-- 页面跳转url&#xff0c;相对路径 --> <navigator url"../logs/logs"><butto…

匿名/箭头函数,立即执行函数IIFE;函数声明式和函数表达式

目录 匿名/箭头函数&#xff1a;简洁 继承上一层作用域链的this 不绑定arguments,用rest参数 rest 参数&#xff1a;...真正的数组 因为没有function声明&#xff0c;所以没有原型prototype&#xff0c;所以不能作为构造函数 当函数体只有一句时&#xff0c;可省 return ,…