无法读取未定义VueJS的属性“ dispatch”

时间:2019-12-09 20:36:27

标签: vue.js vuex jvectormap

当我在方法drawMap()中调用突变操作时,我遇到了问题。 因此,我在main.js中注册了商店组件。

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

在组件的下面,我在另一个方法DRAWMAP中调用动作,但是出现错误

  

'无法读取未定义的VueJS的属性'dispatch''

。我怎么了?

   <script>
window.jQuery = require('jquery');
var $ = window.jQuery;
require('jvectormap');
require('../lib/jquery.vmap');
require('../lib/jquery.vmap.ukraine');
import {mapGetters} from 'vuex';

export default {
    data() {
        return {
            currentRegion: 'Львівська область',
            counter: 0
        }
    },
    mounted() {
        this.drawMap();
        this.$store.dispatch('SET_REGION', this.currentRegion);
    },
    computed: {
        ...mapGetters(['CHOOSED_REGION']),
    },  
    methods: {
        drawMap(){
            $('#vmap').vectorMap({
                map: 'ukraine_ua',
                onRegionClick: function(element, code, region)
                {
                    this.currentRegion = region;
                    this.$store.dispatch('SET_REGION', this.currentRegion);
                }
            });
        },
    }
}
</script>

1 个答案:

答案 0 :(得分:1)

尝试更改onRegionClick以使用箭头功能,以便this.$store.dispatch引用顶级对象。

onRegionClick: (element, code, region) => {
  this.currentRegion = region;
  this.$store.dispatch('SET_REGION', this.currentRegion);
}