ここでは、**Vuexのネームスペース付きモジュール(namespaced module)**を、
**Composition API + <script setup lang="ts">
**の形で正しく読み込む方法を解説します。
Vuexでは、ストアをモジュール単位に分割し、各モジュールに**独自の名前空間(namespace)**を持たせることができます。
例えば:
// sampleModule.ts
@Module({ namespaced: true, name: 'sampleModule' })
export default class SampleModule extends VuexModule { ... }
これにより、他のモジュールとgetterやactionの名前がかぶらない設計ができるようになります。
クラスコンポーネントでは、vuex-class
のnamespace
を使っていました。
const SampleModule = namespace('sampleModule');
@SampleModule.State('text') private text!: string;
sampleModule
の中にある**stateプロパティtext
*を、**このクラスのtext
プロパティにバインド(接続)**しています。@SampleModule.State('text')
は デコレーター と呼ばれる記法です。private
はクラス内だけで使える修飾子です。!:
はTypeScriptの非nullアサーションです(「必ず値があるからコンパイルエラーにしないでね」という宣言)ですが、Composition APIでは、自分でstoreから直接取り出す必要があります!
つまり、
👉 useStore()
+ 手動でネームスペースアクセス が基本になります。