4.2 useStoreが使えない場合の対処方法
ここでは、useStore
が存在しない環境(Vue 2.x + Vuex 3系)で、
Composition APIスタイルに合わせたVuexモジュールの読み込み方法を解説します。
useStore
が使えないのか?Vue 2.x + Vuex 3.x環境では、
Composition API用のuseStore
メソッドが公式には提供されていない。
本来のuseStore
は、Vue 3.x + Vuex 4.x以降の標準API。
👉 自分で、ストアインスタンスを直接importして使えばいい!
つまり、
this.$store
に頼らず
store/index.ts
をimportして使う
これがシンプルな解決策です!
// ファイル名: useSampleModule.ts
import { computed } from 'vue';
import store from '@/store'; // ★ 直接ストアをインポート
export function useSampleModule() {
// sampleModuleのstate, getterにアクセス
const text = computed(() => store.state.sampleModule.text);
const textLength = computed(() => store.getters['sampleModule/textLength']);
const currentRouteName = computed(() => store.getters['sampleModule/currentRouteName']);
// action呼び出し
const updateText = (newText: string) => {
store.dispatch('sampleModule/updateText', newText);
};
return {
text,
textLength,
currentRouteName,
updateText,
};
}
✅ ここでは、store
を直接使っているのがポイント!
// ファイル名: ParentComponent.vue
<script setup lang="ts">
import { useSampleModule } from '@/composables/useSampleModule';
const { text, textLength, currentRouteName, updateText } = useSampleModule();
</script>
✅ useSampleModule
を呼び出すだけで、Vuexのstate・getter・actionが使える!