Skip to content

Complete guide to

Mastering Pinia

written by its creator

API 文档 / pinia / _StoreWithState

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

pinia._StoreWithState

具有 state 和部分功能的基础 store。不应直接使用。

类型参数

名称类型
Idextends string
Sextends StateTree
GG
AA

层次结构

属性

$id

$id: Id

store 的唯一标识符

继承于

StoreProperties.$id


$state

$state: UnwrapRef<S> & PiniaCustomStateProperties<S>

Store 的 State。给它赋值可替换整个 state。


_customProperties

_customProperties: Set<string>

供 devtools 插件使用,用于检索插件添加的属性。 生产版本会被移除。 用户可以用它来添加应在 devtools 中显示的 store 属性键。

继承自

StoreProperties._customProperties

方法

$dispose

$dispose(): void

停止 store 的相关作用域,并从 store 注册表中删除它。 插件可以覆盖此方法来清理已添加的任何副作用函数。 例如, devtools 插件停止显示来自 devtools 的已停止的 store。

返回值

void


$onAction

$onAction(callback, detached?): () => void

设置一个回调,当一个 action 即将被调用时,就会被调用。 回调接收一个对象, 其包含被调用 action 的所有相关信息:

  • store: 被调用的 store
  • name: action 的名称
  • args: 传递给 action 的参数

除此之外,它会接收两个函数, 允许在 action 完成或失败时执行的回调。

它还会返回一个用来删除回调的函数。 请注意,当在组件内调用 store.$onAction() 时,除非 detached 被设置为 true, 否则当组件被卸载时,它将被自动清理掉。

Example

js
store.$onAction(({ after, onError }) => {
 // 你可以在这里创建所有钩子之间的共享变量,
 // 同时设置侦听器并清理它们。
 after((resolvedValue) => {
   // 可以用来清理副作用 
   // `resolvedValue` 是 action 返回的值,
   // 如果是一个 Promise,它将是已经 resolved 的值
 })
 onError((error) => {
   // 可以用于向上传递错误
 })
})

参数

名称类型描述
callbackStoreOnActionListener<Id, S, G, A>callback called before every action
detached?booleandetach the subscription from the context this is called from

返回值

fn

删除侦听器的函数

▸ (): void

设置一个回调,当一个 action 即将被调用时,就会被调用。 回调接收一个对象, 其包含被调用 action 的所有相关信息:

  • store: 被调用的 store
  • name: action 的名称
  • args: 传递给 action 的参数

除此之外,它会接收两个函数, 允许在 action 完成或失败时执行的回调。

它还会返回一个用来来删除回调的函数。 请注意,当在组件内调用 store.$onAction() 时,除非 detached 被设置为 true, 否则当组件被卸载时,它将被自动清理掉。

Example

js
store.$onAction(({ after, onError }) => {
  // 你可以在这里创建所有钩子之间的共享变量,
  // 同时设置侦听器并清理它们。
 after((resolvedValue) => {
   // 可以用来清理副作用 
   // `resolvedValue` 是 action 返回的值,
   // 如果是一个 Promise,它将是已解决的值
 })
 onError((error) => {
   // 可以用于向上传递错误
 })
})
返回值

void

移除侦听器的函数


$patch

$patch(partialState): void

将一个 state 补丁应用于当前状态。允许传递嵌套值

参数

名称类型描述
partialState_DeepPartial<UnwrapRef<S>>patch to apply to the state

返回值

void

$patch<F>(stateMutator): void

将多个变更分组到一个函数中。 当 mutation 对象(如 Sets 或数组)或者应用对象补丁不方便时很有用,例如追加到数组中。 传递给 $patch() 的函数必须是同步的

类型参数

名称类型
Fextends (state: UnwrapRef<S>) => any

参数

名称类型描述
stateMutatorReturnType<F> extends Promise<any> ? never : Ffunction that mutates state, cannot be async

返回值 {returns}

void


$reset

$reset(): void

通过建立一个新的状态对象,将 store 重设为初始状态。 TODO: make this options only

返回值

void


$subscribe

$subscribe(callback, options?): () => void

设置一个回调,当状态发生变化时被调用。它会返回一个用来移除此回调的函数。 请注意,当在组件内调用 store.$subscribe() 时,除非 detached 被设置为 true, 否则当组件被卸载时,它将被自动清理掉。

参数

名称类型描述
callbackSubscriptionCallback<S>callback passed to the watcher
options?{ detached?: boolean } & WatchOptions<boolean>watch options + detached to detach the subscription from the context (usually a component) this is called from. Note that the flush option does not affect calls to store.$patch().

返回值

fn

删除侦听器的函数

▸ (): void

设置一个回调,当状态发生变化时被调用。它还会返回一个用来移除回调的函数。 请注意,当在组件内调用 store.$subscribe() 时,除非 detached 被设置为 true, 否则当组件被卸载时,它将被自动清理掉。

返回值

void

移除侦听器的函数

Released under the MIT License.