Skip to content

Pinia:store 定义、响应式共享与模块边界

主题边界

  • Pinia 解决的是跨组件共享状态、衍生状态、异步动作和调试治理,而不是替代所有局部状态。
  • 它建立在 Vue 3 的 effect scope 和响应式系统之上。

机制与流程

  • defineStore 会创建一个可复用的 store 工厂,store 实例内部状态通过 Vue 响应式系统驱动更新。
  • setup store 直接利用 refcomputedwatch 等组合式 API;option store 则提供更接近传统状态树的声明方式。
  • Pinia 插件、devtools 集成、SSR hydration 与热更新都围绕 store 实例生命周期展开。

关键差异

  • Pinia 与 Vuex 4 的关键差异不只是语法简化,而是去除了 mutation 分层,提升了类型推导和组合式 API 兼容性。
  • 全局 store 适合跨页面、跨组件共享状态;局部页面状态仍应优先留在组件或 composable。

边界条件

  • 把表单临时态、悬浮层开关等局部状态都塞进 Pinia,会让 store 变成难维护的全局垃圾场。
  • SSR 场景下如果复用单例 store 而不按请求隔离,会导致请求间状态串扰。

工程落点

  • Pinia 设计得好时,store 是业务领域边界,而不是页面变量收纳盒。
  • 排查状态异常时,要确认问题落在响应式、action 并发、持久化插件还是路由缓存交互。

相关主题