跳至内容

API 文档文档


API 文档 / pinia / _StoreWithState

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

具有状态和函数的基本存储。不应直接使用。

扩展

类型参数

Id extends string

S extends StateTree

G

A

属性

$id

$id: Id

存储的唯一标识符

继承自

StoreProperties.$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

示例

js
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