Skip to content

Empty 空状态

内容为空时的占位。四种类型区分「没数据」与「加载失败」。

四种类型

default

data

error

vue
<SrEmpty type="default" />
<SrEmpty type="search" />
<SrEmpty type="data" />
<SrEmpty type="error" />

为什么要分类型

这是 Empty 唯一值得强调的设计点。用户看到"空"的时候, 最需要知道的是"为什么空"——而这两件事需要的行动完全不同:

类型场景用户该做什么
search搜不到结果换个关键词
data还没有数据去创建
error加载失败重试
default其他——

用同一个"暂无数据"图标应付全部情况是常见的问题—— 用户搜了个词、看到"暂无数据",会以为系统里真的没有这类信息, 而实际上只是关键词不对。

还没有创建任何项目

加载失败,请检查网络后重试

vue
<SrEmpty type="search" description="没有找到匹配「Vue」的内容" />
<SrEmpty type="data" description="还没有创建任何项目" />
<SrEmpty type="error" description="加载失败,请检查网络后重试" />

带上行动按钮

空状态的文案里最好有下一步该做什么。

vue
<SrEmpty type="data" description="还没有创建任何项目">
  <template #default>
    <SrButton variant="primary">新建项目</SrButton>
  </template>
</SrEmpty>

默认插槽放行动按钮——空状态是引导用户的最佳时机, 此时他正盯着一个什么都没有的区域,注意力最集中。

尺寸

vue
<SrEmpty size="sm" />
<SrEmpty size="md" />
<SrEmpty size="lg" />

用在表格、下拉面板这类紧凑容器里时用 sm—— 默认尺寸在小容器里会显得突兀

自定义图标

vue
<SrEmpty description="暂无通知">
  <template #image>
    <SrIcon size="lg"><svg … /></SrIcon>
  </template>
</SrEmpty>

Props

名称类型默认值说明
descriptionstringtype 派生说明文字
type'default' | 'search' | 'data' | 'error''default'类型
size'sm' | 'md' | 'lg''md'尺寸

插槽

名称说明
default行动区域(通常放一个按钮)
image自定义图标

无障碍

  • 容器带 role="status",内容变化时读屏软件会播报, 而不是让用户对着空白区域反复 Tab
  • 说明文字是文本而非图片——若用图片表达"搜索无结果", 读屏用户只会听到"图片"
  • 行动按钮是真实的 <button>,键盘可聚焦

自用组件库 · 源码分发 · 不发布 npm