API 文档 • 文档
API 文档 / pinia / _StoreWithState
接口: _StoreWithState<Id, S, G, A>
具有状态和函数的基本存储。不应直接使用。
扩展
StoreProperties<Id>
类型参数
• Id extends string
• S extends StateTree
• G
• A
属性
$id
$id:
Id
存储的唯一标识符
继承自
$state
$state:
UnwrapRef<S> &PiniaCustomStateProperties<S>
存储的状态。设置它将在内部调用 $patch() 来更新状态。
_customProperties
_customProperties:
Set<string>
由 devtools 插件用于检索使用插件添加的属性。在生产环境中删除。用户可以使用它来添加存储的属性键,这些键应该显示在 devtools 中。
继承自
StoreProperties._customProperties
方法
$dispose()
$dispose():
void
停止存储的相关效果范围并将其从存储注册表中删除。插件可以覆盖此方法来清理任何添加的效果。例如,devtools 插件停止从 devtools 显示已处置的存储。请注意,这不会删除存储的状态,您必须使用 delete pinia.state.value[store.$id] 手动执行此操作,如果您想这样做。如果您没有这样做,并且该存储再次使用,它将重用以前的状态。
返回
void
$onAction()
$onAction(
callback,detached?): () =>void
设置一个回调,每次操作即将被调用时都会调用它。回调接收一个包含所有相关信息的调用操作的对象
store: 它被调用的存储name: 操作的名称args: 传递给操作的参数
除了这些,它还接收两个函数,允许在操作完成或失败时设置回调。
它还返回一个函数来删除回调。请注意,当在组件内部调用 store.$onAction() 时,除非 detached 设置为 true,否则它将在组件被卸载时自动清理。
参数
• callback: StoreOnActionListener<Id, S, G, A>
在每次操作之前调用的回调
• detached?: boolean
从调用它的上下文分离订阅
返回
函数
删除观察者的函数
返回
void
示例
store.$onAction(({ after, onError }) => {
// Here you could share variables between all of the hooks as well as
// setting up watchers and clean them up
after((resolvedValue) => {
// can be used to cleanup side effects
. // `resolvedValue` is the value returned by the action, if it's a
. // Promise, it will be the resolved value instead of the Promise
})
onError((error) => {
// can be used to pass up errors
})
})$patch()
$patch(partialState)
$patch(
partialState):void
将状态补丁应用于当前状态。允许传递嵌套值
参数
• partialState: _DeepPartial<UnwrapRef<S>>
要应用于状态的补丁
返回
void
$patch(stateMutator)
$patch<
F>(stateMutator):void
将多个更改分组到一个函数中。在对 Set 或数组等对象进行变异并应用对象补丁不切实际时很有用,例如追加到数组。传递给 $patch() 的函数**必须是同步的**。
类型参数
• F extends (state) => any
参数
• stateMutator: ReturnType<F> extends Promise<any> ? never : F
变异 state 的函数,不能是异步的
返回
void
$reset()
$reset():
void
通过构建一个新的状态对象将存储重置为其初始状态。
返回
void
$subscribe()
$subscribe(
callback,options?): () =>void
设置一个回调,每当状态发生变化时都会调用它。它还返回一个函数来删除回调。请注意,当在组件内部调用 store.$subscribe() 时,除非 detached 设置为 true,否则它将在组件被卸载时自动清理。
参数
• callback: SubscriptionCallback<S>
传递给观察者的回调
• options?: object & WatchOptions<boolean>
watch 选项 + detached 从调用它的上下文(通常是组件)分离订阅。请注意,flush 选项不会影响对 store.$patch() 的调用。
返回
函数
删除观察者的函数
返回
void