Skip to content

路由、状态与页面数据:前端应用的状态分层

主题边界

  • 前端应用至少存在 URL 状态、服务端资源状态、共享业务状态和组件局部交互状态四层。
  • 架构问题往往不是“用不用 Pinia”,而是哪种状态应该落在哪一层。

机制与流程

  • URL 状态负责可分享、可回放、可导航的页面条件;共享 store 负责跨组件业务状态;局部状态负责当前组件交互细节。
  • 服务端资源状态还要考虑缓存、失效、重试与并发覆盖,不能简单等同于 Pinia 里的字段。
  • 当路由变化触发数据请求时,需要明确是路由驱动组件重建,还是组件内部 watch 路由参数再取数。

关键差异

  • 把所有数据都塞进全局 store 会弱化 URL 作为状态载体的作用。
  • 页面切换引起的数据失效问题,本质是资源缓存策略与状态边界设计问题,不只是 Vue Router 配置。

边界条件

  • 把弹窗开关、输入框临时值写进 query 或全局 store 都是过度外溢。
  • 过度依赖 watch 同步多份状态副本,会制造循环更新与调试困难。

工程落点

  • 架构清晰的项目会让刷新、回退、分享链接、预取和缓存行为更可预测。
  • 排查复杂页面 bug 时,先确认失真的是哪一层状态,再看同步链有没有越界。

相关主题