gettersとmapGettersの利用方法を解説していきます。
Q. gettersの利用目的とは
gettersはなぜ利用するのでしょうか。
Storeで状態をもつ変数としてstateがあります。stateにアクセスすればgettersを必ずしも利用する必要はありません。ただし、gettersを利用するべきシチュエーションがあります。
それは、stateの値を基に他のデータへと処理したい場合です。
例えば、stateに配列データを含んで、gettersでは条件を基に配列をフィルター処理してデータ提供したい場合などです。
公式サイトの説明でも紹介されています。
Q. gettersの記述方法
gettersのStore内での記述方法
ここでは、簡単な処理にします。 stateのidを+1するgettersを記述します。
export const state = () => ({ id: 0, }) export const getters = { idplus(state) { // satateを引数に持つ return state.id + 1 // gettersの処理 }, }
Q. gettersの呼び出し方法
A. index.js に記述されているsotre -> gettersの場合
<div> {{ $store.getters.idplus }} </div>
A. index.js 以外記述されているsotre -> gettersの場合
ここでは、store/me.js に記述されているstoreとします。
<div> {{ $store.getters['me/idplus'] }} </div>
Q. mapGettersの目的
gettersを呼び出す際に、記述が冗長になりがちです。
各Vueファイル上で、gettersを繰り返す呼び出す場合やコード記述量を減らしたい場合に利用します。
Q. mapGettersの記述方法
gettersを記述していれば、呼び出せます。 mapGettersのための記述は必要ありません。
Q. mapGettersの呼び出し方法
Vueファイル script内にて
import { mapGetters } from 'vuex'
A. index.js に記述されているsotre -> gettersの場合
computed: { ...mapGetters({ idplus: 'idplus', // idplusで命名 }) },
A. index.js に記述されているsotre -> gettersの場合
ここでは、store/me.js に記述されているstoreとします。
computed: { ...mapGetters({ idplus: 'me/idplus', // idplusで命名 }) },
idplusで命名しているので、下記で呼び出します。
<div> {{ idplus }} </div>