Skip to content
目录

插件系统

Pinia 插件是 (context) => { … },在 store 创建后运行,可扩展 $subscribe$onAction、挂载 $router 等。与 Vue app.use 的 Pinia 实例级插件不同(pinia.use(plugin))。


1. 插件能做什么

能力示例
包装 $patch持久化、日志
监听 action埋点、错误上报
添加 $xxx 方法通用工具
多次 store 共享逻辑persistedstate 官方插件

2. 执行时机

Store 首次被使用该 id 创建时 依次应用已注册插件;之后同 id 复用实例不再重复安装插件逻辑。


3. 类型扩展

通过 PiniaCustomProperties / DefineStoreOptions augmentation 让 store.$persist 等有类型。


4. 与中间件对比

Redux middlewarePinia plugin
改 dispatch 链改 store 实例
洋葱平面钩子

5. 最佳实践

  • 持久化用官方 pinia-plugin-persistedstate 或自研 $subscribe
  • 避免插件里隐式改 state 无日志。
  • Nuxt 用模块自动 pinia.use(见 06)。

6. 总结

插件 = store 级别的横切;核心 state 仍由 defineStore 与 Vue 响应式驱动。

MIT License.