4

次のコードを使用して、Vuex を使用して store.js のカウンターをインクリメントしています。インクリメントボタンをクリックすると、次のように表示されます。

[vuex] 不明なアクション タイプ: INCREMENT

store.js

import Vuex from 'vuex'
import Vue from 'vue'
Vue.use(Vuex)
var store = new Vuex.Store({
  state: {
    counter: 0
  },
  mutations: {
    INCREMENT (state) {
      state.counter++;
    }
  }
})
export default store

IcrementButton.vue

<template>
  <button @click.prevent="activate">+1</button>
</template>

<script>
import store from '../store'

export default {
  methods: {
    activate () {
      store.dispatch('INCREMENT');
    }
  }
}
</script>

<style>
</style>
4

1 に答える 1

7

アクションではなくミューcommitテーションをトリガーしているため、メソッドで使用する必要があります。

export default {
  methods: {
    activate () {
      store.commit('INCREMENT');
    }
  }
}

アクションはミューテーションに似ていますが、違いは次のとおりです。

  • 状態を変更する代わりに、アクションは変更をコミットします。
  • アクションには、任意の非同期操作を含めることができます。
于 2016-12-21T05:24:14.827 に答える