应用端实验室移动应用
00 / 00

移动端数据与同步

移动端如何通过 API 获取数据、缓存状态、刷新列表和处理弱网

移动端不直连数据库。它只通过 01MVP API 拿数据,App 里做短期缓存、刷新和错误恢复。

你将学到

  • 移动端数据请求的基本流向:用户操作到 API 再到数据库
  • 首次加载、下拉刷新、弱网、未登录等状态怎么处理
  • 为什么缓存不能当数据库
  • 多端同时编辑时的同步规则
  • 弱网和离线体验的最低要求

数据流向

数据请求的链路很简单:用户操作触发请求,App 的 TanStack Query 负责缓存和刷新,请求通过 oRPC API 到达后端,后端访问数据库。App 不直接碰数据库。

这意味着数据的权威来源永远是服务端。App 里的任何缓存都只是副本,可以被丢弃、被替换、被清空,都不会影响数据本身。

移动端要处理这些状态

状态怎么做
首次加载给个轻量 loading,别白屏
下拉刷新重新请求关键数据
弱网给出能看懂的提示,让用户能重试
未登录引导去登录,别显示一片空白
权限不足说清楚原因,别暴露内部字段

这些状态覆盖好了,用户就不会卡在某个页面动弹不得。TanStack Query 会帮你处理大部分缓存和刷新逻辑,但你需要在 UI 层正确响应每种状态。

别把缓存当数据库

App 缓存只是为了更快显示页面,真正的数据在后端。用户退出登录、切换账号、权限变了,App 都要清掉或刷新缓存。

不要假设缓存里的数据一定是对的。任何时候拿到新数据,都应该用新数据替换缓存。如果一个请求失败了,告诉用户失败了,不要显示过期的缓存数据假装成功。

多端输入时的最低同步规则

如果用户会在 Web、Mobile、Desktop 同时创建或编辑内容,先把同步规则写清楚。MVP 可以简单,但不能含糊。

规则建议
数据来源服务端是最终来源,App 只做本地缓存和临时草稿
写入请求每次创建、编辑、删除都带上用户身份和请求唯一标识,避免重复提交
列表刷新进入页面、下拉刷新、重新联网后重新拉取关键列表
删除处理用服务端删除状态或更新时间处理,避免旧设备把已删内容刷回来
冲突策略先用"最后一次保存为准",重要字段再做确认或合并
退出登录清掉当前用户缓存、草稿和本地 token

如果产品包含笔记、Todo、洞察这类高频编辑内容,建议把"最后保存时间"和"最后编辑端"显示给用户。这样即使发生冲突,用户也能理解当前看到的是哪一版。

弱网和离线体验

第一版不一定要做完整离线编辑,但要避免用户以为内容已经保存。

状态UI 应该怎么反馈
网络断开明确显示当前无法同步
保存中给出进行中状态,避免重复点击
保存失败保留用户输入,提供重试
重新联网自动刷新关键数据,必要时提示用户重新提交

网络状态变化时,不要弹模态框打断用户操作。用轻量的 banner 或 toast 提示就够了。

API 请求的基本规范

移动端发请求时,遵守几个基本规范:

  • 所有请求都带用户身份,不要用匿名请求访问受保护接口
  • 写入操作(创建、编辑、删除)带上请求唯一标识,防止重复提交
  • 列表请求支持分页,不要一次拉全量数据
  • 响应格式保持统一,方便统一处理错误

这些规范在 oRPC 的类型定义里大部分已经帮你约束了,但 UI 层的处理还是需要自己做。

下一步

数据请求和同步的规则搞清楚后,进入 本地存储与会话 了解 SecureStore、缓存和退出登录清理。

想和其他创造者交流?

这篇文档有问题?