用途:为 React 应用提供现代 UI 模式,覆盖加载状态、错误处理与数据获取,适合在构建 UI 组件、处理异步数据或管理界面状态时使用。
核心原则:不展示过期 UI,仅在真正加载时显示加载指示;始终向用户暴露错误;采用乐观更新让界面显得即时;渐进式披露内容;优雅降级,部分数据优于无数据。
加载状态:仅当没有数据可显示时才显示加载指示。判断顺序为:有错误则显示带重试的错误状态;正在加载且无数据则显示加载指示(骨架屏或旋转器);有数据且有内容则展示数据,有数据但为空则显示空状态。已知内容形状、列表或卡片布局、初始页面加载用骨架屏;未知内容形状、模态操作、按钮提交、内联操作可用旋转器。
错误处理:按层级选择内联错误(表单字段校验)、Toast 通知(可恢复错误)、错误横幅(页面级错误但数据仍部分可用)、全屏错误(不可恢复需用户操作)。关键点是绝不静默吞掉错误,变更操作需配置 onError 并向用户反馈。
按钮与空状态:异步操作期间必须禁用触发按钮并显示加载指示,避免重复提交。每个列表或集合都必须提供空状态,并可根据搜索无结果、列表尚无条目等场景给出上下文文案与操作按钮。
表单提交:校验不通过时提示用户修正;提交时禁用按钮并显示加载;成功与失败分别处理。
反模式:有数据时仍显示旋转器会造成闪烁;捕获错误仅打印日志而不提示用户;提交期间不禁用按钮。
完成前检查:错误状态已处理并展示;仅在无数据时显示加载;集合提供空状态;异步操作期间按钮禁用并显示加载;变更配置 onError;所有用户操作有反馈。
可与其他技能配合:graphql-schema 处理变更错误、testing-patterns 测试各 UI 状态、formik-patterns 应用表单提交模式。
限制:仅在任务与上游来源及本地项目上下文明确匹配时使用;应用前需验证命令、生成代码、依赖、凭据与外部服务行为;示例不能替代环境特定测试、安全审查,破坏性或高成本操作需用户批准。