Plugin(插件系统)
介绍
使用pinia.use()
方法为pinia
添加一个插件
插件接收一个函数,传参如下
typescript
export function myPiniaPlugin(context) {
context.pinia // 用 `createPinia()` 创建的 pinia。
context.app // 用 `createApp()` 创建的当前应用(仅 Vue 3)。
context.store // 该插件想扩展的 store
context.options // 定义传给 `defineStore()` 的 store 的可选对象。
// ...
}
TIP
插件支持链式注册,即
typescript
pinia.use(plugin1).use(plugin2)
mini-pinia 中仅做部分实现
实现
实例中提供一个数组用于存储插件 并在合适的时机调用
typescript
const _p = []
use(plugin) {
_p.push(plugin)
return pinia // 重新返回pinia实例以支持链式调用
},
在创建 store 时调用插件
typescript
pinia._p.forEach((plugin) => {
plugin({ store, id }) // 执行插件
})