vuex-class
デコレータを使う (@State
, @Getter
, @Mutation
, @Action
)vuex-class
はクラスコンポーネントで Vuex を簡単&安全に使うためのライブラリ
デコレータ(@State
, @Getter
, @Mutation
, @Action
)を使うことで、
this.$store.xxx
を書かずに、プロパティとして Vuex にアクセスできる
TypeScript でも型チェックが効く(引数の型など)
毎回「冷蔵庫の中から卵を取ってくる」って書くのは面倒。
「うちの冷蔵庫の卵」と名前を付けておけばすぐ使える。
それが
@State('egg') public myEgg!: Egg;
みたいな書き方。
vuex-class
の使い方)npm install vuex-class
src/
├ store/
│ ├ index.ts ← Vuexの本体
│ └ types.ts ← 型を書く
├ components/
│ └ Counter.vue ← クラスコンポーネント
// RootStateの型
export interface RootState {
count: number;
userName: string;
}
// mutation名
export const MutationTypes = {
Increment: 'increment',
SetUserName: 'setUserName'
} as const;
// mutationごとのpayload型
export interface MutationPayloads {
[MutationTypes.Increment]: undefined;
[MutationTypes.SetUserName]: string;
}