TDesign Uniapp 组件库 Empty 空状态组件完整指南:Props、插槽与样式定制实战
前端UI组件小程序设计系统移动开发【免费下载链接】tdesign-miniprogramWechat MiniProgram and Uniapp UI components lib for TDesign项目地址https://gitcode.com/gh_mirrors/tde/tdesign-miniprogram点击查看免费下载Empty空状态组件用于在数据为空、加载失败、暂无内容等场景下提供友好的占位提示引导用户完成后续操作。本文以 TDesign Uniapp 组件库npm 包tdesign/uniapp中的t-empty组件为核心结合其源码实现packages/uniapp-components/empty/系统讲解组件的引入方式、全部 Props、插槽用法、外部样式类与 CSS 变量定制方案并附上可直接复制的实战示例帮助你快速掌握该组件的全部能力。一、组件定位与设计Empty 空状态组件是 TDesign 设计体系中的数据反馈类组件核心职责是在列表无数据、搜索无结果、页面内容为空等场景下做视觉占位。从 empty.vue 的模板结构可以清晰看到组件内部由三个部分组成缩略图区域thumb优先渲染图片其次渲染图标否则渲染自定义image插槽描述文字区域description渲染传入的description文本或自定义描述插槽操作区域actions通过action插槽承载按钮等引导操作。组件根节点使用t-empty前缀作为 classprefix定义在 common/config.js值为t整体采用 flex 纵向布局并居中对齐图标默认尺寸为192rpx见 empty.less 中的empty-icon-size。二、引入组件推荐使用easycom 模式引入组件。配置后无需手动 import 即可直接在模板中使用t-empty /详细配置请参考 快速开始。easycom 的核心原理是在pages.json中配置自定义规则将t-xxx标签自动映射到组件文件。CLI 模式基于node_modules下的tdesign/uniapp配置如下{ easycom: { custom: { ^t-(.*): tdesign/uniapp/$1/$1.vue } } }HBuilderX 模式基于uni_modules下的tdesign-uniapp配置如下{ easycom: { custom: { ^t-(.*): /uni_modules/tdesign-uniapp/components/$1/$1.vue } } }如需手动引入则按常规方式导入并注册组件import TEmpty from tdesign/uniapp/empty/empty.vue; export default { components: { TEmpty, }, };三、三种典型使用场景组件官方示例位于 _example包含图标空状态、自定义图片空状态、带操作空状态三种典型形态下面逐一讲解。3.1 图标空状态最轻量的用法只传入icon图标名称和description描述文字适合大多数空数据占位场景参考 _example/base/index.vuetemplate view t-empty iconinfo-circle-filled description描述文字 / /view /template3.2 自定义图片空状态当图标无法满足诉求时可通过image属性传入图片地址组件内部会复用t-image组件以aspectFit模式展示图片参考 _example/imageEmpty/index.vuetemplate view t-empty t-classempty-cls t-class-imaget-empty__image :imageimage description描述文字 / /view /template script import TEmpty from tdesign/uniapp/empty/empty.vue; export default { options: { styleIsolation: shared, }, components: { TEmpty, }, data() { return { image: https://tdesign.gtimg.com/mobile/demos/empty1.png, }; }, }; /script style :deep(.t-empty__image) { width: 240rpx !important; height: 240rpx !important; } /style注意示例中通过:deep(.t-empty__image)覆盖图片尺寸这是图片空状态定制尺寸的常用手法。从 empty.vue 的模板可以看到当同时传入image时图片优先级高于icon且二者都未提供时才会渲染image插槽。3.3 带操作空状态在空状态下方放置操作按钮引导用户执行“刷新”“重新加载”“去创建”等动作参考 _example/buttonEmpty/index.vuetemplate view t-empty iconinfo-circle-filled description描述文字 template #action t-button themeprimary sizelarge 操作按钮 /t-button /template /t-empty /view /template script import TButton from tdesign/uniapp/button/button.vue; import TEmpty from tdesign/uniapp/empty/empty.vue; export default { components: { TEmpty, TButton, }, }; /script四、Empty Props 详解组件 Props 定义位于 props.ts对应的 TypeScript 接口位于 type.ts。| 名称 | 类型 | 默认值 | 描述 | 必传 | | -- | -- | -- | -- | -- | | custom-style | Object | - | 自定义样式 | N | | description | String | - | 描述文字 | N | | icon | String / Object | - | 图标名称。值为字符串表示图标名称值为Object类型表示透传至icon| N | | image | String | - | 图片地址 | N |4.1 custom-style用于为组件根节点注入自定义样式。需要注意的是虽然文档表中标注类型为Object但实际在组件框架层 instantiationDecorator.js 中将customStyle定义为[String, Object]的联合类型默认值为空字符串因此字符串与对象两种写法均可被接受。在 empty.vue 中该样式通过tools._style([customStyle])处理后绑定到根节点view上。4.2 description描述文字直接渲染在图标或图片下方。从 empty.less 的样式实现看描述区域设置了white-space: pre-wrap这意味着描述文本中的换行符会被保留可以自然实现多行描述。4.3 icon支持两种取值形式字符串直接传图标名称例如iconinfo-circle-filled对象透传给t-icon组件的属性集合。对象形式的底层转换逻辑位于 common/utils.js 的setIcon函数当icon为字符串时内部将其转换为iconName当为对象时则整体作为iconData传递。最终在 empty.vue 模板中iconData上的style、prefix、name、size、color、ariaHidden、ariaLabel、ariaRole等字段会被逐一透传给内部t-icon组件。因此对象形式实际支持的能力包括t-empty :icon{ name: info-circle-filled, size: 40px, color: #0052d9, prefix: t, style: margin-top: 8rpx, ariaLabel: 暂无数据, } description描述文字 /4.4 image图片地址。传入后组件内部使用t-image组件以aspectFit模式渲染图片见 empty.vue可保证图片等比缩放且完整显示。五、Empty Slots 插槽组件提供三个具名插槽用于在保持组件骨架不变的前提下完全自定义局部内容。| 名称 | 描述 | | -- | -- | | action | 操作按钮 | | description | 自定义description显示内容 | | image | 自定义image显示内容 |插槽的渲染优先级从 empty.vue 模板中可以明确看出image 区域image属性 icon属性 image插槽即插槽仅在未传图片且未传图标时生效description 区域description属性与description插槽同时渲染属性文本在上插槽内容紧随其后action 区域仅渲染action插槽内容。六、Empty External Classes 外部样式类外部样式类是 TDesign 组件库为适配小程序、Uniapp 平台样式隔离机制提供的定制入口允许开发者在外部通过 class 覆盖组件内部节点样式。组件声明见 empty.vue。| 类名 | 描述 | | -- | -- | | t-class | 根节点样式类 | | t-class-description | 描述样式类 | | t-class-image | 图片样式类 |同时源码中还额外声明了t-class-actions操作区样式类文档未单列但可直接使用。用法示例t-empty t-classempty-cls t-class-descriptiont-empty__desc t-class-imaget-empty__image description描述文字 /外部样式类通常需配合styleIsolation: shared使用组件与页面中均已设置结合:deep()选择器即可精确控制内部节点样式。七、CSS 变量与主题定制Empty 组件在 empty.less 中通过 CSS 变量预留了完整的定制能力所有默认值均来自 TDesign 设计令牌token可通过在页面或page节点上覆盖变量实现全局或局部主题定制。| 变量名 | 默认值 | 描述 | | -- | -- | -- | | --td-empty-action-margin-top | spacer-4 | 操作区顶部间距 | | --td-empty-description-color | text-color-placeholder | 描述文字颜色 | | --td-empty-description-font | font-body-medium | 描述文字字体 | | --td-empty-description-margin-top | spacer-2 | 描述区顶部间距 | | --td-empty-icon-color | text-color-placeholder | 图标颜色 |各默认 token 的具体取值均可从仓库中溯源spacer-232rpxspacer-464rpx定义于 theme/raw/_spacer.lesstext-color-placeholder实际为var(--td-text-color-placeholder, font-gray-3)定义于 style/_variables.lessfont-body-medium实际为var(--td-font-body-medium, 28rpx / 44rpx font-family)即字号 28rpx、行高 44rpx定义于 style/_variables.less其完整字体族与字号/行高令牌可参考 theme/raw/_font.less。组件在使用变量时统一采用var(--td-xxx, 默认值)的兜底写法例如empty-description-color: var(--td-empty-description-color, text-color-placeholder);因此即使主题变量未被覆盖组件也能正常工作一旦覆盖即立即生效。典型定制示例page { --td-empty-description-color: #0052d9; /* 描述文字改为主题蓝 */ --td-empty-icon-color: #999; /* 图标颜色 */ --td-empty-description-margin-top: 48rpx; /* 加大描述与图标间距 */ --td-empty-action-margin-top: 80rpx; /* 加大操作区与描述间距 */ }八、源码原理小结综合来看Empty 组件的实现遵循了 TDesign Uniapp 组件库的通用工程化模式Props 与类型分离props.ts运行时声明与 type.tsTdEmptyProps接口由脚本自动生成并保持一致二者通过uniComponent组装进组件图标归一化icon属性无论传字符串还是对象都统一经过 common/utils.js 的setIcon转为iconName/iconData两路数据再交由t-icon渲染样式令牌化颜色、间距、字体全部通过 CSS 变量承接设计令牌便于全局换肤与局部覆盖平台兼容通过外部样式类、styleIsolation: shared、虚拟宿主判断canUseVirtualHost等机制同时兼容小程序与各端运行环境。掌握了这些原理与上文完整覆盖的 Props、Slots、外部样式类和 CSS 变量四套定制入口你就可以在任何 TDesign Uniapp 项目中轻松搭建贴合业务场景的空状态页面。赞分享前端UI组件小程序设计系统移动开发【免费下载链接】tdesign-miniprogramWechat MiniProgram and Uniapp UI components lib for TDesign项目地址https://gitcode.com/gh_mirrors/tde/tdesign-miniprogram点击查看免费下载相关推荐TDesign Uniapp Empty 空状态组件实战指南引入、属性、插槽与样式定制TDesign Uniapp Empty 空状态组件实战指南引入、属性、插槽与样式定制 Empty 空状态组件是 TDesign 移动端组件库中用于列表无数前端UI组件小程序设计系统移动开发TDesign 小程序 Empty 空状态组件Props 参数、插槽定制与 CSS 变量完整指南TDesign 小程序 Empty 空状态组件Props 参数、插槽定制与 CSS 变量完整指南 空状态Empty是数据展示类页面最常见的占位组件用于列前端UI组件小程序设计系统移动开发TDesign Uniapp FormItem 表单项组件实战指南Props、插槽、校验机制与样式定制TDesign Uniapp FormItem 表单项组件实战指南Props、插槽、校验机制与样式定制 导读 TDesigntdesign miniprog前端UI组件小程序设计系统移动开发上一篇Hive 框架 Bounty 贡献者指南从领取赏金到晋升 Core Contributor 的完整实战手册下一篇Apereo CAS REST 认证策略REST Authentication Policy配置指南通过外部接口检测账号状态与登录策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

蓝桥杯选Python还是C++?

蓝桥杯选Python还是C++?

针对蓝桥杯竞赛,Python 和 C 是目前公认最简单且最具优势的语言选择,具体取决于你的基础和目标奖项。核心语言对比分析维度: Python (推荐入门/拿奖) | C (推荐冲国一/就业) | Java (备选) | 代码简洁度 | 极高。语法接近伪代码,行…

2026/10/16 6:23:52 阅读更多 →
新电脑装 Office 还要手动折腾?用 LKY Office Tools 一键跑完安装激活完整流程

新电脑装 Office 还要手动折腾?用 LKY Office Tools 一键跑完安装激活完整流程

新电脑装 Office 还要手动折腾?用 LKY Office Tools 一键跑完安装激活完整流程 【免费下载链接】LKY_OfficeTools 一键自动化 下载、安装、激活 Office 的利器。 项目地址: https://gitcode.com/GitHub_Trending/lk/LKY_OfficeTools 新机器到手,W…

2026/10/16 6:23:52 阅读更多 →
MooTool Next Tauri 原生桌面体验设计解析:截图、取色、剪贴板、拖放与防休眠的平台差异决策

MooTool Next Tauri 原生桌面体验设计解析:截图、取色、剪贴板、拖放与防休眠的平台差异决策

桌面应用开发工具 【免费下载链接】MooTool Handy tool set for developers 项目地址: https://gitcode.com/gh_mirrors/mo/MooTool 点击查看 免费下载 导读 本文以 MooTool 仓库中已采纳的 ADR-010:原生桌面体验与平台差异 为骨架,深入解析…

2026/10/16 6:23:52 阅读更多 →

最新新闻

面向对象核心知识详解:从类与对象到封装继承多态

面向对象核心知识详解:从类与对象到封装继承多态

最近重新翻出自己几年前记的一套面向对象基础笔记,边看边感慨。当年跟着一套讲得很细的Java基础课,逐行敲代码、抄概念、画内存图的日子,其实才是真正把编程底子打牢的阶段。面向对象这四个字,很多新手一听就觉得抽象,…

2026/10/16 7:14:04 阅读更多 →
antenna-forge 的核心信条:为什么『绝不伪造结果』是电磁仿真平台不可妥协的底线

antenna-forge 的核心信条:为什么『绝不伪造结果』是电磁仿真平台不可妥协的底线

【免费下载链接】antenna-forge AI-driven inverse antenna design with real NEC2 openEMS in the loop. Try the live in-browser playground. 项目地址: https://gitcode.com/gh_mirrors/an/antenna-forge 点击查看 免费下载 antenna-forge(YAF&…

2026/10/16 7:14:04 阅读更多 →
Markdown转知识卡片:解决公众号手机端排版难题的利器

Markdown转知识卡片:解决公众号手机端排版难题的利器

作为一个常年用 Markdown 码字、又经常要打理手机端内容的人,我最烦的一件事就是:电脑上排得好好的文章,一到公众号后台粘贴就彻底翻车。代码块没有高亮、列表层级全丢、整段文字挤成一堵密不透风的墙,读者拿手机看两行就划走了。…

2026/10/16 7:14:04 阅读更多 →
SSM+Vue实战:学生作业管理系统开发全攻略

SSM+Vue实战:学生作业管理系统开发全攻略

每年到毕业季,总有学生为毕设选题和实现头疼。如果你正好在找Java方向的系统类毕设,或者想做一个能跑通前后端分离的完整项目,“基于SSMVue的学生作业管理系统”是个非常经典且性价比极高的选择。这个项目不复杂但五脏俱全,覆盖了…

2026/10/16 7:14:04 阅读更多 →
REPENTOGON 的 Lua Vector 类深度指南:运算符元方法、FromAngle 与 nil 安全修复

REPENTOGON 的 Lua Vector 类深度指南:运算符元方法、FromAngle 与 nil 安全修复

游戏开发插件系统 【免费下载链接】REPENTOGON Script extender for The Binding of Isaac: Repentance 项目地址: https://gitcode.com/gh_mirrors/re/REPENTOGON 点击查看 免费下载 Vector 是《以撒的结合:忏悔》(The Binding of Isaac: R…

2026/10/16 7:14:04 阅读更多 →
OCR自动标注工具实战:检测识别与人工复核的全流程解析

OCR自动标注工具实战:检测识别与人工复核的全流程解析

说到OCR自动标注,做过数据标注或者AI数据集相关工作的人应该都不陌生。不管是票据、合同、书页扫描件,还是截图、卡片、白底商品图,只要涉及文字信息结构化,第一步都是把图片里的文字区域框出来,再把文字内容读出来&am…

2026/10/16 7:13:04 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →