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