API 文档 • 文档
API 文档 / pinia / DefineStoreOptionsInPlugin
接口: DefineStoreOptionsInPlugin<Id, S, G, A>
创建 Pinia 插件时可用的 options
。
扩展
Omit
<DefineStoreOptions
<Id
,S
,G
,A
>,"id"
|"actions"
>
类型参数
• 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
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)
}
})