Empty空状态组件怎么在Vue里优雅地展示?

令狐一莹 阅读 12

我在用Vue做列表页,数据为空时想显示一个友好的空状态提示,但不知道怎么组织结构才合理。试过直接在v-if里写提示文字,但样式和逻辑混在一起很乱。

现在用了个简单的写法,但感觉不够通用,每次都要重复写一样的结构:

<div v-if="list.length === 0" class="empty-state">
  <img src="/empty.svg" alt="空状态" />
  <p>暂无数据</p>
</div>
<ul v-else>
  <li v-for="item in list" :key="item.id">{{ item.name }}</li>
</ul>

有没有更组件化的方式?比如封装成一个<Empty />组件,还能自定义文案和图标?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
UI俊涵
UI俊涵 Lv1
封装一个Empty组件就行, props接收文案和图标,用v-if="$slots.default"判断是否显示默认插槽的内容:







用起来就是这样:




这样文案、图标、按钮都能自定义,还支持默认插槽放操作按钮,比之前那种写法干净多了。
点赞
2026-03-13 22:02