更新记录
1.0.0(2026-05-19)
下载此版本
初始版本
支持四种状态展示
内置图标资源
支持自定义文字配置
平台兼容性
uni-app(3.8.1)
| Vue2 |
Vue2插件版本 |
Vue3 |
Vue3插件版本 |
Chrome |
Safari |
app-vue |
app-vue插件版本 |
app-nvue |
Android |
Android插件版本 |
iOS |
iOS插件版本 |
鸿蒙 |
| √ |
1.0.0 |
√ |
1.0.0 |
- |
- |
√ |
1.0.0 |
- |
4.4 |
1.0.0 |
12 |
1.0.0 |
- |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| - |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
uni-app x(3.8.1)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| - |
- |
- |
- |
- |
- |
mevermore-state
一个优雅的状态视图组件,用于在 UniApp 项目中展示加载中、空数据、错误和网络异常等状态。
功能特性
- 支持四种状态展示:加载中、空数据、错误、网络异常
- 内置精美图标资源,无需额外引入
- 支持自定义提示文字和按钮文本
- 优雅的卡片式布局设计
- 平滑的动画效果
安装
# 通过 npm 安装
npm install mevermore-state --save
# 或直接复制组件到项目中
使用示例
基本使用
<template>
<view>
<mevermore-state :state="currentState" />
</view>
</template>
<script>
export default {
data() {
return {
currentState: 'loading' // loading, empty, error, network, content
};
}
};
</script>
自定义文字
<mevermore-state
:state="currentState"
loading-text="正在加载..."
empty-text="暂无数据,请稍后再试"
empty-button-text="点击刷新"
error-text="加载失败"
network-text="网络连接失败,请检查网络"
retry-button-text="重新加载"
@emptyclick="handleEmptyClick"
@retry="handleRetry"
/>
API
Props
| 参数 |
类型 |
默认值 |
说明 |
| state |
String |
content |
状态值,可选值:loading、empty、error、network、content |
| loadingText |
String |
加载中... |
加载状态的提示文字 |
| emptyText |
String |
暂无数据 |
空数据状态的提示文字 |
| emptyButtonText |
String |
- |
空数据状态的按钮文字(不设置则不显示按钮) |
| errorText |
String |
加载失败 |
错误状态的提示文字 |
| networkText |
String |
网络连接失败 |
网络异常状态的提示文字 |
| retryButtonText |
String |
重试 |
错误和网络状态的重试按钮文字 |
| minHeight |
Number |
400 |
组件最小高度(单位:px) |
Events
| 事件名 |
说明 |
| retry |
点击重试按钮时触发 |
| emptyclick |
点击空状态按钮时触发 |
状态说明
| 状态值 |
说明 |
显示内容 |
| loading |
加载中 |
加载动画 + 提示文字 |
| empty |
空数据 |
空图标 + 提示文字 + 可选按钮 |
| error |
加载失败 |
错误图标 + 提示文字 + 重试按钮 |
| network |
网络异常 |
网络图标 + 提示文字 + 重试按钮 |
| content |
显示内容 |
不显示任何状态视图 |
项目结构
mevermore-state/
├── components/
│ └── mevermore-state/
│ └── mevermore-state.vue # 主组件
├── static/
│ ├── empty.png # 空状态图标
│ └── loading.svg # 加载动画图标
├── package.json
├── readme.md
└── changelog.md
示例代码
<template>
<view>
<mevermore-state
:state="state"
:min-height="500"
loading-text="努力加载中..."
empty-text="暂无相关数据"
empty-button-text="去看看其他"
error-text="哎呀,出错了"
network-text="网络不给力,请检查网络连接"
retry-button-text="再试一次"
@retry="onRetry"
@emptyclick="onEmptyClick"
/>
</view>
</template>
<script>
export default {
data() {
return {
state: 'loading'
};
},
methods: {
onRetry() {
// 重试逻辑
this.state = 'loading';
// 重新加载数据...
},
onEmptyClick() {
// 空状态按钮点击逻辑
console.log('空状态按钮被点击');
}
}
};
</script>
关于图片路径
组件中的图片使用绝对路径 /uni_modules/mevermore-state/static/,这是因为:
- 确保路径解析正确:在 UniApp 中,相对路径可能会因为组件被引用的位置不同而导致解析错误
- 兼容 H5 和小程序:不同平台对相对路径的处理方式不同,绝对路径更可靠
- 便于维护:统一的资源路径管理更易于维护和迁移
如果需要使用相对路径,需要根据组件实际被引用的位置调整路径,但不建议这样做,因为可能导致在不同页面引用时出现资源找不到的问题。
样式说明
- 组件使用卡片式布局,带有圆角和阴影效果
- 图标区域使用渐变背景,不同状态有不同的配色方案
- 加载图标有旋转动画效果
- 按钮点击有缩放反馈效果
版本历史
v1.0.0
- 初始版本
- 支持四种状态展示
- 内置图标资源
- 支持自定义文字配置
许可证
MIT License