Store实例的属性和方法
Store实例的属性
$id
- $id:
Id
sotre 的唯一标识符
通过调用store.$id
获取
$state
- $state:
UnwrapRef
<S
>&PiniaCustomStateProperties
<S
>
store的状态,设置好的state
需要在内部调用$patch()
方法才能更新
通过调用store.$state
获取当前定义的state
_customProperties
- _customProperties:
Set
<string
>
由 devtools 插件用来检索使用插件添加的属性。 在生产中被删除。 用户可以使用它来添加应在 devtools 中显示的 Store 的属性。
Store实例的方法
$dispose
- $dispose:
void
摧毁 store 实例
$onAction
- $onAction(
callback
,detached?
): () =>void
设置每次要调用操作时调用的回调。 回调接收一个包含所调用操作的所有相关信息的对象:
- store:调用它的 store
- name:动作的名称
- args:传递给动作的参数
除此之外,它还接收两个函数,允许在操作完成或失败时设置回调。
它还返回一个函数来删除回调。 请注意,在组件内部调用 store.$onAction()
时,除非将 detached
设置为 true
,否则组件卸载时它将自动清理。
store.$onAction(({ after, onError }) => {
// 在这里,您可以在所有挂钩之间共享变量以及设置观察者并清理它们
after((resolvedValue) => {
// 可用于清除副作用 `resolvedValue` 是操作返回的值,如果它是 Promise,则它将是解析值而不是 Promise
})
onError((error) => {
// 可以用来传递错误
})
})
$patch
- $patch(
partialState
):void
用于更新State
的值,允许传递嵌套数据
this.$patch({ name: '更新name' })
- $patch<
F
>(stateMutator
):void
当要对数组或对象进行操作时候,不必新建一个对象就可以更新,但是必须是同步的
this.$patch(() => {
this.nameList.push('加入nameList的数据')
})
$reset
- $reset():
void
通过构建新的状态对象将存储重置为其初始状态。
$subscribe
- $subscribe(
callback
,options
?): () =>void
设置每当状态改变时调用的回调。 它还返回一个函数来删除回调。 请注意,在组件内部调用 store.$subscribe()
时,除非将 detached
设置为 true
,否则组件卸载时它将自动清理。