API 文档 / pinia

模块:pinia

枚举

接口

类型别名

PiniaStorePlugin

Ƭ PiniaStorePlugin: PiniaPlugin

扩展每个 store 的插件。

deprecated 使用 PiniaPlugin 代替

定义于

pinia/src/rootStore.ts:149


StateTree

Ƭ StateTree: Record<string | number | symbol, any>

Store 的通用状态

定义于

pinia/src/types.ts:13


Store

Ƭ Store<Id, S, G, A>: _StoreWithState<Id, S, G, A> & UnwrapRef<S> & _StoreWithGetters<G> & _ActionsTree extends A ? {} : A & PiniaCustomProperties<Id, S, G, A> & PiniaCustomStateProperties<S>

建立一个 store 的 Store 类型。

类型参数

名称类型
Id扩展自 string = string
S扩展自 StateTree = {}
G{}
A{}

定义于

pinia/src/types.ts:472


StoreActions

Ƭ StoreActions<SS>: SS extends Store<string, StateTree, _GettersTree<StateTree>, infer A> ? A : _ExtractActionsFromSetupStore<SS>

提取一个 store 类型的 action。 对 Setup Store 或 Option Store都有效。

类型参数

名称
SS

定义于

pinia/src/store.ts:727


StoreGeneric

Ƭ StoreGeneric: Store<string, StateTree, _GettersTree<StateTree>, _ActionsTree>

通用的、类型不安全的 Store 版本。 在访问字符串时不会失败, 这使得编写不在意传递的 store 类型的通用函数更加容易。

定义于

pinia/src/types.ts:491


StoreGetters

Ƭ StoreGetters<SS>: SS extends Store<string, StateTree, infer G, _ActionsTree> ? _StoreWithGetters<G> : _ExtractGettersFromSetupStore<SS>

提取一个 store 类型的 getter。 对 Setup Store 或 Option Store都有效。

类型参数

名称
SS

定义于

pinia/src/store.ts:740


StoreOnActionListener

Ƭ StoreOnActionListener<Id, S, G, A>: (context: StoreOnActionListenerContext<Id, S, G, {} extends A ? _ActionsTree : A>) => void

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
GG
AA

类型{#type} declaration

▸ (context): void

store.$onAction() 的参数

参数
名称类型
contextStoreOnActionListenerContext<Id, S, G, {} extends A ? _ActionsTree : A>
返回值

void

定义于

pinia/src/types.ts:243


StoreOnActionListenerContext

Ƭ StoreOnActionListenerContext<Id, S, G, A>: _ActionsTree extends A ? _StoreOnActionListenerContext<StoreGeneric, string, _ActionsTree> : { [Name in keyof A]: Name extends string ? _StoreOnActionListenerContext<Store<Id, S, G, A>, Name, A> : never }[keyof A]

Context object passed to callbacks of store.$onAction(context => {}) TODO: should have only the Id, the Store and Actions to generate the proper object

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
GG
AA

定义于

pinia/src/types.ts:227


StoreState

Ƭ StoreState<SS>: SS extends Store<string, infer S, _GettersTree<StateTree>, _ActionsTree> ? UnwrapRef<S> : _ExtractStateFromSetupStore<SS>

提取一个 store 类型的 state。 对 Setup Store 或 Option Store 都有效。请注意,它会对 refs 解包。

类型参数

名称
SS

定义于

pinia/src/store.ts:753


SubscriptionCallback

Ƭ SubscriptionCallback<S>: (mutation: SubscriptionCallbackMutation<S>, state: UnwrapRef<S>) => void

类型参数

名称
S

类型{#type} declaration

▸ (mutation, state): void

订阅的回调

参数
名称类型
mutationSubscriptionCallbackMutation<S>
stateUnwrapRef<S>
返回值

void

定义于

pinia/src/types.ts:148


SubscriptionCallbackMutation

Ƭ SubscriptionCallbackMutation<S>: SubscriptionCallbackMutationDirect | SubscriptionCallbackMutationPatchObject<S> | SubscriptionCallbackMutationPatchFunction

传递给订阅回调的上下文对象。

类型参数

名称
S

定义于

pinia/src/types.ts:140


_Awaited

Ƭ _Awaited<T>: T extends null | undefined ? T : T extends object & { then: (onfulfilled: F) => any } ? F extends (value: infer V, ...args: any) => any ? _Awaited<V> : never : T

类型参数

名称
T

定义于

pinia/src/types.ts:164

变量

PiniaVuePlugin

PiniaVuePlugin: Plugin

Vue 2 插件,必须安装该插件才能使 pinia 工作。注意 如果你使用的是 Nuxt.js,你不需要这个插件。请使用 buildModule 代替: https://pinia.vuejs.org/ssr/nuxt.html。

example

import Vue from 'vue'
import { PiniaVuePlugin, createPinia } from 'pinia'

Vue.use(PiniaVuePlugin)
const pinia = createPinia()

new Vue({
  el: '#app',
  // ...
  pinia,
})

param 从 'vue' 导入的 Vue.

定义于

pinia/src/vue2-plugin.ts:28

函数

acceptHMRUpdate

acceptHMRUpdate(initialUseStore, hot): (newModule: any) => any

创建一个 accept 函数,在 Vite 应用程序中传递给 import.meta.hot

example

const useUser = defineStore(...)
if (import.meta.hot) {
  import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))
}

参数

名称类型描述
initialUseStoreStoreDefinition<string, StateTree, _GettersTree<StateTree>, _ActionsTree>热更新 defineStore 的返回值
hotanyimport.meta.hot

返回值

fn

▸ (newModule): any

参数
名称类型
newModuleany
返回值

any

定义于

pinia/src/hmr.ts:73


createPinia

createPinia(): Pinia

创建一个 Pinia 实例,供应用程序使用。

返回值

Pinia

定义于

pinia/src/createPinia.ts:10


defineStore

defineStore<Id, S, G, A>(id, options): StoreDefinition<Id, S, G, A>

创建一个 useStore 函数,检索 store 实例

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree = {}
G扩展自 _GettersTree<S> = {}
A{}

参数

名称类型描述
idIdid of the store (must be unique)
optionsOmit<DefineStoreOptions<Id, S, G, A>, "id">options to define the store

返回值

StoreDefinition<Id, S, G, A>

定义于

pinia/src/store.ts:776

defineStore<Id, S, G, A>(options): StoreDefinition<Id, S, G, A>

创建一个 useStore 函数,检索 store 实例

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree = {}
G扩展自 _GettersTree<S> = {}
A{}

参数

名称类型描述
optionsDefineStoreOptions<Id, S, G, A>options to define the store

返回值

StoreDefinition<Id, S, G, A>

定义于

pinia/src/store.ts:792

defineStore<Id, SS>(id, storeSetup, options?): StoreDefinition<Id, _ExtractStateFromSetupStore<SS>, _ExtractGettersFromSetupStore<SS>, _ExtractActionsFromSetupStore<SS>>

创建一个 useStore 函数,检索 store 实例

类型参数

名称类型
Id扩展自 string
SSSS

参数

名称类型描述
idIdid of the store (must be unique)
storeSetup() => SSfunction that defines the store
options?DefineSetupStoreOptions<Id, _ExtractStateFromSetupStore<SS>, _ExtractGettersFromSetupStore<SS>, _ExtractActionsFromSetupStore<SS>>extra options

返回值

StoreDefinition<Id, _ExtractStateFromSetupStore<SS>, _ExtractGettersFromSetupStore<SS>, _ExtractActionsFromSetupStore<SS>>

定义于

pinia/src/store.ts:807


getActivePinia

Const getActivePinia(): undefined | Pinia

如果有的话,获取当前活跃的 pinia

返回值

undefined | Pinia

定义于

pinia/src/rootStore.ts:39


mapActions

mapActions<Id, S, G, A, KeyMapper>(useStore, keyMapper): _MapActionsObjectReturn<A, KeyMapper>

允许直接使用来自你的 store 的 action,而不需要使用组合式 API(setup()), 通过生成一个对象来传播到组件的 methods 字段。 该对象的值是 action, 而键是产生的方法名称。

example

export default {
  methods: {
    // 其他方法属性
    // useCounterStore 有两个 action,分别是 `increment` and `setCount`。
    ...mapActions(useCounterStore, { moar: 'increment', setIt: 'setCount' })
  },

  created() {
    this.moar()
    this.setIt(2)
  }
}

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
G扩展自 _GettersTree<S>
AA
KeyMapper扩展自 Record<string, keyof A>

参数

名称类型描述
useStoreStoreDefinition<Id, S, G, A>store to map from
keyMapperKeyMapperobject to define new names for the actions

返回值

_MapActionsObjectReturn<A, KeyMapper>

定义于

pinia/src/mapHelpers.ts:326

mapActions<Id, S, G, A>(useStore, keys): _MapActionsReturn<A>

允许直接使用你 store 里的 action, 而不需要使用组合式 API(setup()), 通过生成一个对象,传播到组件的 methods 字段。

example

export default {
  methods: {
    // 其他方法属性
    ...mapActions(useCounterStore, ['increment', 'setCount'])
  },

  created() {
    this.increment()
    this.setCount(2) // 像往常一样传递参数
  }
}

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
G扩展自 _GettersTree<S>
AA

参数

名称类型描述
useStoreStoreDefinition<Id, S, G, A>store to map from
keyskeyof A[]array of action names to map

返回值

_MapActionsReturn<A>

定义于

pinia/src/mapHelpers.ts:359


mapGetters

Const mapGetters<Id, S, G, A, KeyMapper>(useStore, keyMapper): _MapStateObjectReturn<Id, S, G, A, KeyMapper>

mapState() 的别名。你应该使用 mapState() 来代替。

deprecated 使用 mapState() 代替

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
G扩展自 _GettersTree<S>
AA
KeyMapperextends Record<string, keyof S | keyof G | (store: Store<Id, S, G, A>) => any>

参数

名称类型
useStoreStoreDefinition<Id, S, G, A>
keyMapperKeyMapper

返回值

_MapStateObjectReturn<Id, S, G, A, KeyMapper>

定义于

pinia/src/mapHelpers.ts:285

Const mapGetters<Id, S, G, A, Keys>(useStore, keys): _MapStateReturn<S, G, Keys>

mapState() 的别名。你应该使用 mapState() 来代替。

deprecated 使用 mapState() 代替

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
G扩展自 _GettersTree<S>
AA
Keys扩展自 string | number | symbol

参数

名称类型
useStoreStoreDefinition<Id, S, G, A>
keysreadonly Keys[]

返回值

_MapStateReturn<S, G, Keys>

定义于

pinia/src/mapHelpers.ts:285


mapState

mapState<Id, S, G, A, KeyMapper>(useStore, keyMapper): _MapStateObjectReturn<Id, S, G, A, KeyMapper>

允许在不使用组合式 API(setup())的情况下使用一个 store的 state 和 getter, 通过生成一个对象,传播至组件的computed字段。 该对象的值是 state 属性/getter, 而键是生成的计算属性名称。 你也可以选择传递一个自定义函数, 该函数将接收 store 作为其第一个参数。 注意,虽然它可以通过 this 访问组件实例,但它不会被类型检查。

example

export default {
  computed: {
    // 其他计算属性
    // useCounterStore 拥有一个名为 `count` 的 state 属性和一个名为 `double` 的 getter
    ...mapState(useCounterStore, {
      n: 'count',
      triple: store => store.n * 3,
      // 如果想使用 `this`,就不能使用箭头函数
      custom(store) {
        return this.someComponentValue + store.n
      },
      doubleN: 'double'
    })
  },

  created() {
    this.n // 2
    this.doubleN // 4
  }
}

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
G扩展自 _GettersTree<S>
AA
KeyMapperextends Record<string, keyof S | keyof G | (store: Store<Id, S, G, A>) => any>

参数

名称类型描述
useStoreStoreDefinition<Id, S, G, A>store to map from
keyMapperKeyMapperobject of state properties or getters

返回值

_MapStateObjectReturn<Id, S, G, A, KeyMapper>

定义于

pinia/src/mapHelpers.ts:194

mapState<Id, S, G, A, Keys>(useStore, keys): _MapStateReturn<S, G, Keys>

允许在不使用组合式 API(setup())的情况下使用一个 store 的 state 和 getter, 方法是生成一个对象, 传播到组件的computed字段。

example

export default {
  computed: {
    // 其他计算属性
    ...mapState(useCounterStore, ['count', 'double'])
  },

  created() {
    this.count // 2
    this.double // 4
  }
}

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
G扩展自 _GettersTree<S>
AA
Keys扩展自 string | number | symbol

参数

名称类型描述
useStoreStoreDefinition<Id, S, G, A>store to map from
keysreadonly Keys[]array of state properties or getters

返回值

_MapStateReturn<S, G, Keys>

定义于

pinia/src/mapHelpers.ts:231


mapStores

mapStores<Stores>(...stores): _Spread<Stores>

允许在不使用组合式 API(setup())的情况下使用 store, 方法是生成一个对象,传播到组件的 computed 字段。 它接受一个 store 定义的列表。

example

export default {
  computed: {
    // 其他计算属性
    ...mapStores(useUserStore, useCartStore)
  },

  created() {
    this.userStore // id 为 "user" 的 store
    this.cartStore // id 为 "cart" 的 store
  }
}

类型参数

名称类型
Stores扩展自 any[]

参数

名称类型描述
...stores[...Stores[]]list of stores to map to an object

返回值

_Spread<Stores>

定义于

pinia/src/mapHelpers.ts:96


mapWritableState

mapWritableState<Id, S, G, A, KeyMapper>(useStore, keyMapper): _MapWritableStateObjectReturn<S, KeyMapper>

mapState() 相同,但是也创建了计算的 stter, 所以 state 可以被修改。 与 mapState() 不同的是,只有 state 属性可以被添加。

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
G扩展自 _GettersTree<S>
AA
KeyMapper扩展自 Record<string, keyof S>

参数

名称类型描述
useStoreStoreDefinition<Id, S, G, A>store to map from
keyMapperKeyMapperobject of state properties

返回值

_MapWritableStateObjectReturn<S, KeyMapper>

定义于

pinia/src/mapHelpers.ts:440

mapWritableState<Id, S, G, A>(useStore, keys): _MapWritableStateReturn<S>

允许在不使用组合式 API(setup())的情况下 使用来自一个 store 的 state 和 getter, 方法是生成一个对象来传播到组件的computed字段。

类型参数

名称类型
Id扩展自 string
S扩展自 StateTree
G扩展自 _GettersTree<S>
AA

参数

名称类型描述
useStoreStoreDefinition<Id, S, G, A>store to map from
keyskeyof S[]array of state properties

返回值

_MapWritableStateReturn<S>

定义于

pinia/src/mapHelpers.ts:458


setActivePinia

Const setActivePinia(pinia): undefined | Pinia

设置或取消设置活跃的 pinia。 在 SSR 和内部调用 action 和 getter 时使用。

参数

名称类型描述
piniaundefined | PiniaPinia instance

返回值

undefined | Pinia

定义于

pinia/src/rootStore.ts:33


setMapStoreSuffix

setMapStoreSuffix(suffix): void

改变由 mapStores() 添加的后缀。可以设置为空字符串。 默认为"Store"。如果你需要使用 TypeScript, 请确保扩展 MapStoresCustomization 接口。

参数

名称类型描述
suffixstringnew suffix

返回值

void

定义于

pinia/src/mapHelpers.ts:66


skipHydrate

skipHydrate<T>(obj): T

类型参数

名称类型
Tany

参数

名称类型
objT

返回值

T

定义于

pinia/src/store.ts:85


storeToRefs

storeToRefs<SS>(store): ToRefs<StoreState<SS> & StoreGetters<SS> & PiniaCustomStateProperties<StoreState<SS>>>

创建一个引用对象,包含 store 的所有 state、 getter 和 plugin 添加的 state 属性。 类似于 toRefs(),但专门为 Pinia store 设计, 所以 method 和非响应式属性会被完全忽略。

类型参数

名称类型
SSextends _StoreWithState<string, StateTree, _GettersTree<StateTree>, _ActionsTree, SS> & {} & _StoreWithGetters<_GettersTree<StateTree>> & PiniaCustomProperties<string, StateTree, _GettersTree<StateTree>, _ActionsTree, SS> & PiniaCustomStateProperties<StateTree, SS>

参数

名称类型描述
storeSSstore to extract the refs from

返回值

ToRefs<StoreState<SS> & StoreGetters<SS> & PiniaCustomStateProperties<StoreState<SS>>>

定义于

pinia/src/storeToRefs.ts:13