Vuexは、Vue.jsアプリケーションの状態管理ライブラリです。Vue.jsはシングルページアプリケーション(SPA)のためのJavaScriptフレームワークであり、コンポーネントベースのアプローチを採用しています。Vuexは、アプリケーション全体の状態を一元管理し、コンポーネント間でのデータ共有を容易にするために設計されています。
以下に、Vuexの基本的な構成要素を紹介します:
- State: アプリケーションの状態を保持するオブジェクトです。各コンポーネントからこの状態にアクセスし、データを取得します。
- Getters: Stateから派生した状態を取得するための関数です。計算されたプロパティのように使用でき、コンポーネントが必要とする特定のデータを取得するために使用します。
- Mutations: Stateを同期的に変更するためのメソッドです。唯一Stateを変更することができる方法であり、必ずcommitを通じて呼び出されます。
- Actions: 非同期の操作を含むことができるメソッドです。APIリクエストなどの非同期処理を行い、その後にmutationsをコミットしてStateを変更します。
- Modules: 大規模なアプリケーションの場合、Vuexストアをモジュールに分割して管理しやすくすることができます。各モジュールは独自のstate, getters, mutations, actionsを持つことができます。
基本的な使い方
- Vuexのインストール:
npm install vuex
- ストアの設定:
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
increment(context) {
context.commit('increment');
}
},
getters: {
doubleCount(state) {
return state.count * 2;
}
}
});
export default store;
- Vueインスタンスにストアを注入:
import Vue from 'vue';
import App from './App.vue';
import store from './store'; // 上で設定したストアをインポート
new Vue({
store,
render: h => h(App)
}).$mount('#app');
- コンポーネント内での使用:
<template>
<div>
<p>{{ count }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { mapState, mapActions } from 'vuex';
export default {
computed: {
...mapState(['count'])
},
methods: {
...mapActions(['increment'])
}
};
</script>
以上がVuexの基本的な使い方です。これにより、アプリケーション全体の状態管理を一元化し、コンポーネント間でのデータ共有が容易になります。
コメント