用途:为界面定义非理想路径状态,把加载、空、错误、部分数据、离线视为与正常路径同等重要的组成部分,避免出现闪烁的转圈、无解释的“无数据”、单个请求失败导致整页空白等问题。
主要能力:提供加载阈值阶梯(800ms 以下不显示指示器;800ms 至 3s 显示转圈或控件待定态;超过 3s 显示已知布局的骨架屏或确定性进度);错误分类表(网络/超时、5xx、403、404、校验 4xx、客户端异常,各自对应渲染位置与恢复控件);空状态三分(首次为空、筛选为空、安静表面);离线保留旧数据并标记过期、排队写入、重连重试;部分数据按区域独立失败;乐观更新仅限用户发起、易撤销、近乎必然成功的操作,失败需可见回滚。
使用方式:从项目已有数据层读取状态标志,如 TanStack Query 与 SWR 的 isPending、isFetching、isError、isPlaceholderData,RSC 的 Suspense 边界与 error.tsx,或 Redux/Zustand 的 status 字段,不要另设并行的 loading 布尔值。按固定六行块输出规格:Surface、Loading、Empty、Error、Offline、Partial,不适用处显式写 n/a。
适用场景:表格、列表、仪表盘、表单、图表等界面的状态规格设计。
限制:加载阈值是项目内可测试的默认值,需在真实界面上验证后再全项目采用;骨架屏仅用于已知且加载后不移动的布局;重试应重发请求而非刷新页面;离线时依赖服务器状态的操作应拒绝而非排队。具体实现细节与完整代码示例暂未提供。