院卒新人サラリーマンのメモ代わり

備忘としてのメモを記載

vuexに慣れるために

//store.js
//stateに変数、mustaitonsにstateのsetterを書く
//exportにモジュール名を書く

const countNum = {
  namespaced: true,
  state: {
    count: 0,
  },
  mutations: {
    increment: state => state.count++,
    decrement: state => state.count--,
  },
}

const msgA = {
  namespaced: true,
  state: {
    scores: 0,
    message: '初期',
  },
  mutations: {
    saveData(state, payload) {
      state.scores = payload
    },
    changeMsg(state, payload) {
      state.message = payload
    },
  },

export default new Vuex.Store({
  modules: {
    countNum,
    msgA,
  },
})
//vueファイル
<script>
export default {
  computed: {
    count() {
      return this.$store.state.countNum.count
    }
  },
  methods: {
    increment() {
      this.$store.commit("countNum/increment")
    },
  }
};
</script>

//dataの共有方法
//computed内で
1, "this.$store.state.モジュール名.変数名"
2,    ...mapState('モジュール名',[
        '変数名'
        ]),

//dataの変更方法
//methods内で
1, "this.$store.commit('モジュール名/increment')"
2,    ...mapMutations('モジュール名', [
        'メソッド名',
        ]),

vuexのイメージ
各vueファイルに分散していたdataをstore.jsにまとめちゃう。
dataの値をいじる方法もstore.jsにまとめちゃう。
各vueファイルではstore.jsのdataとmethodsを自分のdataやmethodsに結びつける。

vuexの使いづらいところ。
メソッドを呼び出してどのdataがどう変更されたかがわかりにくい
→わかりやすいメソッド名をつける、コメントを入れる
mapHogeは若干読みづらい→省略記法だから慣れるまでは使わないでおこう