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?
optionalgetters:G&ThisType<UnwrapRef<S> &_StoreWithGetters<G> &PiniaCustomProperties<string,StateTree,_GettersTree<StateTree>,_ActionsTree>> &_GettersTree<S>
可选的 getter 对象。
继承自
Omit.getters
state()?
optionalstate: () =>S
用于创建新状态的函数。必须是箭头函数以确保正确的类型!
返回
S
继承自
Omit.state
方法
hydrate()?
optionalhydrate(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)
}
})