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

備忘としてのメモを記載

vuex触ってみた

//main.js
import store from "./store" //追加

new Vue({
  el: '#app',
  store, //追加
  template: '<App/>',
  components: { App }
})
//これで子コンポーネントで毎回importしなくてもthis.$storeでアクセスできる
//store/index.js
import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

const store = new Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    plus(state, payload) { //stateは自分、payloadは渡された値
      state.count += payload;
    }
  }
});

export default store;

//state = data
//mutations = setter と理解しとけば大丈夫
export default {
  name: "app",
  // store,
  computed: {
    count(){ //算出プロパティで取り出す
      return this.$store.state.count;
    },
  },
  methods: {
    addCount(){
      //処理
      this.$store.commit('plus', 3); // 第一引数にmutation名、第二引数に渡す値
    },
  }
};
//mapStateとかあるけど、これらは省略記法だから最小構成はこんな感じ
//storeのactionは必要になったらで良い
//storeのgetterは現状取り出したときにイジれば済む、必要になったら作ればよい