状态、缓存、刷新与异常处理
首屏与刷新
使用 useSwrPageRefresh 管理冷启动、已有数据刷新、错误和快照。无可用内容时显示骨架;已有数据刷新失败时保留可用内容并提示错误。权限失效等不能继续展示的场景,应撤回不再允许的数据。
实施步骤
- 定义稳定的 refreshKey 和业务 scope,包含必要的用户或记录上下文。
- 由
getSnapshot统一产出页面快照,通过applySnapshot应用;不把任意内部返回对象直接塞进公共快照池。 - 将刷新函数绑定已有 repository/view-model,并处理 onLoad/onShow 合并。
- 私有页使用会话绑定失效标记,请求完成后核对用户 ID、revision 与对象归属。
- 写入成功后只使受影响页面失效,返回或重新进入时刷新。
缓存不是业务结果
价格有效期需要随当前时间重新判断;轮播与协议在主动刷新时需要穿透相应公共缓存。不能只刷新 view-model 而仍从下层取到同一旧快照。
最小验证
- 缓存首屏可用,后台更新后重新进入得到新值。
- 两次生命周期重叠不重复发起同一读取。
- A 用户的延迟响应不覆盖 B 用户页面。
- 分页失败后释放加载锁,可重试且不丢已有内容。
- 读取或保存失败不显示虚假的成功状态,权限收回后不保留私有数据。