Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
31 righe
604 B
31 righe
604 B
import { InjectionKey } from 'vue'
|
|
import { createStore, useStore as baseUseStore, Store } from 'vuex'
|
|
|
|
// 为 store state 声明类型
|
|
export interface State {
|
|
num: number
|
|
}
|
|
|
|
// 定义 injection key
|
|
export const key: InjectionKey<Store<State>> = Symbol()
|
|
|
|
export const store = createStore<State>({
|
|
state: {
|
|
num: 888
|
|
},
|
|
mutations: {
|
|
setNum (state: State, num: number) {
|
|
state.num = num
|
|
}
|
|
},
|
|
getters: {
|
|
getNum (state: State) {
|
|
return state.num
|
|
}
|
|
}
|
|
})
|
|
|
|
// 定义自己的 `useStore` 组合式函数
|
|
export function useStore () {
|
|
return baseUseStore(key)
|
|
}
|
|
|