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

《Vue3 七》插槽 Slot

插槽可以让组件的使用者来决定组件中的某一块区域到底存放什么元素和内容。

使用插槽:

插槽的使用过程其实就是抽取共性、预留不同。将共同的元素、内容依然留在组件内进行封装;将不同的元素使用 slot 作为占位,让外部决定到底显示什么样的元素。

// App.vue
<template><!-- 2. 在父组件中调用子组件时,子组件开始标签和结束标签之间的内容将会被插入到子组件中插槽中 --><AppContent><button>按钮</button></AppContent><AppContent><a href="http:www.com">百度一下</a></AppContent>
</template><script>
import AppContent from './components/AppContent'export default {components: {AppContent,}
}
</script><style scoped>
</style>
// AppContent.vue
<template><div><h1>内容标题</h1><!-- 在子组件中预留插槽 --><slot></slot></div>
</template><script>
export default {
}
</script><style scoped>
</style>

在这里插入图片描述

插槽的默认内容:

<slot></slot>元素开始标签和结束标签之间的内容会作为插槽的默认内容,插槽的默认内容只会在没有提供插入的内容时显示。

// App.vue
<template><!-- 在父组件中调用子组件时,不提供插槽的内容 --><AppContent />
</template><script>
import AppContent from './components/AppContent'export default {components: {AppContent,}
}
</script><style scoped>
</style>
// AppContent.vue
<template><div><h1>内容标题</h1><slot><!-- <slot></slot> 开始标签和结束标签之间的内容会作为插槽的默认内容显示 --><div>这是插槽的默认内容</div></slot></div>
</template><script>
export default {
}
</script><style scoped>
</style>

在这里插入图片描述

具名插槽:

具名插槽:就是给插槽命名,通过 <slot> 元素的 name 属性可以给插槽命名。这样当一个组件中有多个插槽时,就可以区分出来要插入的内容是要插入哪个插槽中。

一个不带 name 的插槽,默认隐含的名字是 default。

// App.vue
<template><NavBar><!-- 2. 在父组件中,使用 template 元素包裹要插入到插槽中的内容,通过 v-slot:插槽的名称 来决定要插入哪个插槽中 --><!-- v-slot:[变量名] 可以通过这种方式来动态地绑定插槽的名称 --><!-- v-slot 的缩写为 # --><template v-slot:left><button>返回</button></template><template v-slot:center><input /></template><template v-slot:right><button>搜索</button></template></NavBar>
</template><script>
import NavBar from './components/NavBar'export default {components: {NavBar,}
}
</script><style scoped>
</style>
// NavBar.vue
<template><div class='navbar'><div class="left"><!-- 1. 在子组件中通过 name 属性给插槽命名 --><slot name="left"></slot></div>   <div class="center"><slot name="center"></slot></div> <div class="right"><slot name="right"></slot></div> </div>
</template><script>
export default {
}
</script><style scoped>
</style

作用域插槽:

作用域插槽的核心就是能够将子组件中的数据传递给父组件的插槽来使用。

// App.vue
<template><AppContent><!-- 2. 在父组件中,使用 template 元素包裹要插入到插槽中的内容,通过 v-slot:插槽名称="slotProps" 可以获取到子组件中指定插槽传递过来的数据 --><template v-slot:default="slotProps"><p>{{ slotProps.content }}</p></template></AppContent>
</template><script>
import AppContent from './components/AppContent'export default {components: {AppContent,}
}
</script><style scoped>
</style>
// AppContent.vue
<template><div><h1>子组件的标题</h1><!-- 1. 在子组件中,通过给 slot 元素添加属性的方式给父组件传递数据 --><slot content="子组件的内容"></slot></div>
</template><script>
export default {
}
</script><style scoped>
</style>
http://www.lryc.cn/news/516836.html

相关文章:

  • 【C++数据结构——线性表】顺序表的基本运算(头歌实践教学平台习题)【合集】
  • Linux C/C++编程-获得套接字地址、主机名称和主机信息
  • USB kbtab linux 驱动代码
  • 力扣 跳跃游戏
  • 使用npm 插件[mmdc]将.mmd时序图转换为图片
  • ffmpeg 常用命令
  • 从入门到实战:C 语言 strlen 函数通关指南
  • npm install --global windows-build-tools --save 失败
  • 十种基础排序算法(C语言实现,带源码)(有具体排序例子,适合学习理解)
  • 基于fMRI数据计算脑脊液(CSF)与全脑BOLD信号的时间耦合分析
  • 实现websocket心跳检测,断线重连机制
  • ComfyUI节点安装笔记
  • 深度学习,训练集准确率高,但验证集准确率一直不上升,很低的问题
  • 【C语言程序设计——选择结构程序设计】求输入的日期是该年的第几天(头歌实践教学平台习题)【合集】
  • Lumos学习王佩丰Excel二十四讲系列完结
  • 前后端规约
  • 【数据可视化】数据可视化看板需求梳理模板(含示例)
  • CArray原理是什么,通过示例来展示如何使用?
  • 更换WordPress主题的基础知识及注意事项
  • springcloud篇3-docker需熟练掌握的知识点
  • 基于单片机的直流稳压电源的设计(论文+源码)
  • uniapp-vue3 实现, 一款带有丝滑动画效果的单选框组件,支持微信小程序、H5等多端
  • 解锁 C 语言字符函数密码,开启高效编程之路
  • LLM之RAG实战(五十一)| 使用python和Cypher解析PDF数据,并加载到Neo4j数据库
  • 力扣-数组-01两数之和
  • Flutter中的网络请求图片存储为缓存,与定制删除本地缓存
  • 保障移动应用安全:多层次安全策略应对新兴威胁
  • 【Linux】函数
  • Maven中管理SNAPSHOT版本含义及作用
  • win10 VS2019上libtorch库配置过程