# 3.x から 4.0 への移行 ほとんどすべての Vuex 4 の API は、Vuex 3 から変更されていません。しかし、修正が必要な破壊的変更がいくつかあります。 - [破壊的変更](#破壊的変更) - [インストール手順](#インストール手順) - [TypeScript サポート](#typescript-サポート) - [バンドルが Vue 3 に対応しました](#バンドルが-vue-3-に対応しました) - ["createLogger" 関数はコアモジュールからエクスポートされます](#createlogger-関数はコアモジュールからエクスポートされます) - [新機能](#新機能) - [新しい "useStore" 合成関数](#新しい-usestore-合成関数) ## 破壊的変更 ### インストール手順 新しい Vue 3 の初期化の手順に合わせて、Vuex のインストール手順が変更されました。新しいストアを作成するには、新しく導入された createStore 関数を使用することが推奨されます。 ```js import { createStore } from 'vuex' export const store = createStore({ state () { return { count: 1 } } }) ``` VueインスタンスにVuexをインストールするには、Vuexではなく`store`を渡します。 ```js import { createApp } from 'vue' import { store } from './store' import App from './App.vue' const app = createApp(App) app.use(store) app.mount('#app') ``` :::tip 注意 厳密にはこれは破壊的変更ではなく、まだ `new Store(...)` 構文を使用することができますが、Vue 3 と Vue Router Next に合わせるためにこの方法を推奨します。 ::: ### TypeScript サポート Vuex 4 は、[issue #994](https://github.com/vuejs/vuex/issues/994) を解決するために、Vue コンポーネント内の `this.$store` のグローバルな型付けを削除します。TypeScript で使用する場合は、独自のモジュール拡張を宣言する必要があります。 次のコードをあなたのプロジェクトに配置して、`this.$store` が正しく型付けされるようにしてください。 ```ts // vuex-shim.d.ts import { ComponentCustomProperties } from 'vue' import { Store } from 'vuex' declare module 'vue' { // ストアのステートを宣言する interface State { count: number } interface ComponentCustomProperties { $store: Store } } ``` 詳細は、[TypeScript サポート](./typescript-support) セクションをご覧ください. ### バンドルが Vue 3 に対応しました 以下のバンドルは、Vue 3 のバンドルに合わせて生成されます。 - `vuex.global(.prod).js` - ブラウザの `