了解です!
では続けて 第3章 3.2 Composition APIでのVuex利用(useStore) に進みます。
ここでは、先ほどのクラスコンポーネントでの
this.count
this.increment()
という Vuexの使い方 を、
Composition API(useStore()
)でどう書き換えるのかを具体的に説明します。
// computedの中
...mapState(['count'])
// methodsの中
...mapMutations(['increment'])
// 使用
this.count // state の count
this.increment() // mutation の increment
<template>
<!-- 子コンポーネントにVuexのstateを渡す -->
<ChildComponent :count="count" @increment="incrementCount" />
</template>
<script lang="ts" setup>
// useStoreをインポート
import { useStore } from 'vuex';
// 型安全のためState型もインポート
import { State } from '@/store';
// reactiveなローカルstateを用意(必要なら)
import { computed } from 'vue';
// 子コンポーネントをインポート
import ChildComponent from './ChildComponent.vue';
// ストアインスタンスを取得
const store = useStore<State>();
// Vuexのstate(count)をcomputedで取得
const count = computed(() => store.state.count);
// Vuexのmutation(increment)を呼び出す関数
function incrementCount() {
store.commit('increment');
}
</script>
クラス時代 | Composition API (useStore) |
---|---|
this.count |
computed(() => store.state.count) |
this.increment() |
store.commit('increment') |
mapState , mapMutations |
不要 |
this が必要 |
this 不要 → 関数内で直接アクセス |
型補完が弱い | useStore<State>() で型補完が効く |