Appearance
Pinia:store 定义、响应式共享与模块边界
主题边界
- Pinia 解决的是跨组件共享状态、衍生状态、异步动作和调试治理,而不是替代所有局部状态。
- 它建立在 Vue 3 的 effect scope 和响应式系统之上。
机制与流程
defineStore会创建一个可复用的 store 工厂,store 实例内部状态通过 Vue 响应式系统驱动更新。- setup store 直接利用
ref、computed、watch等组合式 API;option store 则提供更接近传统状态树的声明方式。 - Pinia 插件、devtools 集成、SSR hydration 与热更新都围绕 store 实例生命周期展开。
关键差异
- Pinia 与 Vuex 4 的关键差异不只是语法简化,而是去除了 mutation 分层,提升了类型推导和组合式 API 兼容性。
- 全局 store 适合跨页面、跨组件共享状态;局部页面状态仍应优先留在组件或 composable。
边界条件
- 把表单临时态、悬浮层开关等局部状态都塞进 Pinia,会让 store 变成难维护的全局垃圾场。
- SSR 场景下如果复用单例 store 而不按请求隔离,会导致请求间状态串扰。
工程落点
- Pinia 设计得好时,store 是业务领域边界,而不是页面变量收纳盒。
- 排查状态异常时,要确认问题落在响应式、action 并发、持久化插件还是路由缓存交互。