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

vue 三种类型的插槽

插槽,用于在组件中定义可替换的内容区域。通过插槽,父组件可以向子组件传递内容(如HTML、文本、其他组件等),从而实现更灵活和可复用的组件设计。

一、默认插槽

默认插槽是最简单的插槽形式,父组件传递的内容会替换子组件中的<slot>标签。

子组件Child

<template><div class="child"><h3>子组件标题</h3><slot>默认内容</slot></div>
</template>

父组件

<template><Child><p>这是父组件传递的内容</p><Child/>
</template>

渲染结果

<div class="child"><h3>子组件标题</h3><p>这是父组件传递的内容</p>
</div>

如果父组件没有传递内容,<slot>中的默认内容(“默认内容”)会显示

二、具名插槽

具名插槽允许子组件定义多个插槽区域,父组件可以通过v-slot指定内容插入的位置。

子组件Child

<template><div class="child"><header><slot name="header">默认头部</slot></header><main><slot>默认内容</slot></main><footer><slot name="footer">默认尾部</slot></footer></div>
</template>

父组件

<template><Child><template v-slot:header><h1>自定义头部</h1></template><p>这是主内容</p><template v-slot:footer><p>自定义尾部</p></template></Child>
</template>

渲染结果

<div class="child"><header><h1>自定义头部</h1></header><main><p>这是主内容</p></main><footer><p>自定义尾部</p></footer>
</div>

父组件通过v-slot:name指定内容插入的位置;未命名的内容会插入到默认插槽中

三、作用域插槽

作用域插槽允许父组件访问子组件的数据,从而实现更灵活的内容渲染。

子组件Child

<template><div class="child"><slot :user="user" :msg="msg"></slot></div>
</template><script>
export default {data() {return {user: {name: 'Alice',age: 25,},msg: '吃饭'}}
}
</script>

父组件

<template><Child v-slot="{ user, msg }"><p>姓名: {{ user.name }}</p><p>年龄: {{ user.age }}</p>{{ msg }}</Child>
</template>

渲染结果

<div class="child"><p>姓名:Alice</p><p>年龄: 25</p>吃饭
</div>

子组件通过:user="user"将数据传递给插槽;父组件通过v-slot="{ user }"接收数据并渲染内容

四、高级用法

1.动态插槽名

通过动态插槽名,可以根据数据动态选择插槽

子组件

<template><div class="child"><slot name="dynamic">默认内容</slot></div>
</template>

父组件

<template><Child><template v-slot:[slotName]><p>这是动态插槽内容</p></template></Child>
</template>export default {data() {return {slotName: 'dynamic',}}
}

2.插槽的缩写

默认插槽的缩写:#default
具名插槽的缩写:#name

<template><Child><template #header><h1>自定义头部</h1></template><template #default><p>这是主内容</p></template><template #footer><p>自定义尾部</p></template></Child>
</template>
http://www.dtcms.com/a/582205.html

相关文章:

  • TCP的核心特性精讲(上篇)
  • 河源市企业网站seo价格商城网站策划书
  • Spark-3.5.7文档5 - Spark Streaming 编程指南
  • 北京网站关键词优化推荐徐州列表网
  • Spring 事务管理 Transaction rolled back because it has been marked as rollback-only
  • git不想被添加的文件加入到了列表中如何去掉
  • 网关开发笔记
  • 不备案怎么做淘宝客网站吗网站的视频怎么下载
  • 贵阳市住房和城乡建设部网站北京有几个区几个县
  • 【笔记】修复 ComfyUI 启动 ImportError: cannot import name ‘cached_download‘ 错误
  • 长沙网站优化页面学校网站建设工作
  • 昆明企业做网站黎城网站建设
  • 在vue3+uniapp+vite中挂载全局属性方法
  • 地理信息科学 vs 测绘工程:专业区别与就业前景
  • ​​Linux环境下的C语言编程(十六)
  • 淘宝购物返利网站开发基层建设杂志网站
  • 某多多 Redis 面试相关知识点总结
  • 【STM32】知识点介绍三:哈希算法详解
  • Effective STL第8条: 切勿创建包含auto_ptr的容器对象
  • 使用DrissionPage实现虚拟货币市场数据智能爬取
  • 零基础入门C语言之预处理详解
  • 做外汇门户网站重庆相亲网
  • 域名怎么绑定自己网站企业网站如何去做优化
  • Cursor 2.0 扩展 Composer 功能,助力上下文感知式开发
  • C语言应用实例:奋勇争先锋(贪心,qsort用法)
  • 机器学习数学知识温习(2)- 高斯-正态分布
  • 【FAQ】HarmonyOS SDK 闭源开放能力 — Push Kit
  • 济南网站建设 泉诺家装公司排名前十
  • 网站开发主要都做些什么佛山网站优化有
  • 机器人+工业领域=?