Pinia 不是所有页面都必须用。它解决的核心问题,是多个组件或页面之间共享同一份状态。
什么场景适合用
适合使用 Pinia 的场景包括:
- 多个组件都要读取同一份数据。
- 评论发布后要刷新列表。
- 分页状态需要跨组件协作。
- 用户信息全局使用。
- 主题、语言、侧边栏状态需要共享。
- 页面缓存需要统一管理。
如果只有父子组件传值,普通 props 和事件就够了。
Pinia 的缓存边界
Pinia 默认是内存状态。
这意味着:
- 刷新页面会丢失。
- 同一个浏览器页面里可共享。
- 不同标签页不一定同步。
- 不等同于后端缓存。
所以不要把 Pinia 当成数据库,也不要把重要数据只放在 Pinia 里。
内存占用不必过度担心
页面渲染本身就需要内存。只要状态规模合理,使用 Pinia 不会因为“多了一层 store”就变得不可接受。
真正要避免的是:
- 把大列表长期放全局。
- 把临时表单状态都塞进全局。
- 没有清理过期状态。
- 把接口原始大对象到处共享。
状态共享要服务业务,不是为了显得架构完整。
持久化插件
如果状态需要刷新后保留,可以考虑持久化插件。
但持久化前要判断:
- 是否包含敏感信息。
- 是否会过期。
- 是否需要版本迁移。
- 是否会污染其他账号。
- 是否应该放 localStorage。
用户 token、权限和隐私数据要格外谨慎。
维护建议
使用 Pinia 前可以问三个问题:
- 是否超过两个地方使用。
- 是否需要跨页面或跨组件共享。
- 是否需要刷新后保留。
如果答案都是“否”,普通组件状态可能更简单。
正文完




