跳至内容

API 文档文档


API 文档 / pinia / DefineStoreOptionsInPlugin

接口: DefineStoreOptionsInPlugin<Id, S, G, A>

创建 Pinia 插件时可用的 options

扩展

类型参数

Id extends string

S extends StateTree

G

A

属性

actions

actions: A

提取的动作对象。当使用 setup API 构建存储时,由 useStore() 添加,否则使用传递给 defineStore() 的对象。如果未定义任何动作,则默认为空对象。


getters?

optional getters: G & ThisType<UnwrapRef<S> & _StoreWithGetters<G> & PiniaCustomProperties<string, StateTree, _GettersTree<StateTree>, _ActionsTree>> & _GettersTree<S>

可选的 getter 对象。

继承自

Omit.getters


state()?

optional state: () => S

用于创建新状态的函数。必须是箭头函数以确保正确的类型!

返回

S

继承自

Omit.state

方法

hydrate()?

optional hydrate(storeState, initialState): void

允许在 SSR 期间对存储进行水合,当在存储定义中使用复杂状态(如客户端专用 ref)时,并且从 pinia.state 复制值不够。

参数

storeState: UnwrapRef<S>

存储中的当前状态

initialState: UnwrapRef<S>

初始状态

返回

void

继承自

Omit.hydrate

示例

如果在你的 state 中,你使用了任何 customRef、任何 computed 或任何在服务器和客户端具有不同值的 ref,你需要手动对其进行水合。例如,存储在本地存储中的自定义 ref

ts
const useStore = defineStore('main', {
  state: () => ({
    n: useLocalStorage('key', 0)
  }),
  hydrate(storeState, initialState) {
    // @ts-expect-error: https://github.com/microsoft/TypeScript/issues/43826
    storeState.n = useLocalStorage('key', 0)
  }
})