Javascript 无法读取属性';提交';未定义VUEX的定义

Javascript 无法读取属性';提交';未定义VUEX的定义,javascript,undefined,vuex,commit,Javascript,Undefined,Vuex,Commit,请帮助我,它总是说无法读取未定义的属性“commit”。这是我在store.js中的代码 import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); export const store = new Vuex.Store({ state:{ timer: null, totaltime: (25 * 60) }, mutations:{ startTimer: (state, cont

请帮助我,它总是说无法读取未定义的属性“commit”。这是我在store.js中的代码

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export const store = new Vuex.Store({
  state:{
     timer: null,
     totaltime: (25 * 60)
  }, 
  mutations:{
    startTimer: (state, context) => {
    //here is the problem part I think
      state.timer = setInterval(() => context.commit('countDown'),
      1000)
    },
    countDown: state => {
      var time = state.totaltime
      if(time >= 1){
        time--
      }else{
        time = 0
      }
    },
    stopTimer: state => {
      clearInterval(state.timer)
      state.timer = null
    },
    resetTimer: state => {
      state.totaltime = (25 * 60)
      clearInterval(state.timer)
    }
  },
  getters:{
      minutes: state => {
        const minutes = Math.floor(state.totaltime / 60);
        return minutes;
      },
      seconds: (state, getters) => {
        const seconds = state.totaltime - (getters.minutes * 60);
        return seconds;
      }
  },
  actions:{


  }
})
我对它的调试有问题。它总是这样说 '无法读取未定义的'commit'属性'

这是我的Timer.vue调用代码

methods: {
      formTime(time){
        return (time < 10 ? '0' : '') + time;
      },
      startTimer(){
        this.resetButton = true
        this.$store.commit('startTimer')
      },
      stopTimer(){
        this.$store.commit('stopTimer')
      },
      resetTimer(){
        this.$store.commit('resetTimer')
      },

    },
    computed: {
      minutes(){
        var minutes = this.$store.getters.minutes;
        return this.formTime(minutes)
      },
      seconds(){
        var seconds = this.$store.getters.seconds;
        return this.formTime(seconds);
      },
      timer: {
        get(){
          return this.$store.state.timer
        }
      }
    }
方法:{
formTime(时间){
返回(时间<10?'0':'')+时间;
},
startTimer(){
this.resetButton=true
此.$store.commit('startTimer'))
},
停止计时器(){
这是。$store.commit('stopTimer'))
},
重置计时器(){
这是。$store.commit('resetTimer'))
},
},
计算:{
会议记录(){
var minutes=this.$store.getters.minutes;
返回此。formTime(分钟)
},
秒(){
var seconds=this.$store.getters.seconds;
返回此.formTime(秒);
},
计时器:{
得到(){
返回此。$store.state.timer
}
}
}

我在Timer.vue脚本中的代码和计算方法。我无法追踪问题所在。。。请帮我解决这个问题。

突变无法访问任何
上下文。它们是原子的,也就是说,它们直接处理状态的一个方面。您应该将
startTimer
设置为提交
计时器的操作,然后开始倒计时

突变:{
//添加此选项以设置计时器
设置计时器(状态,计时器){
state.timer=计时器
}
},
行动:{
startTimer({commit}){
commit('stopTimer')//只是一个猜测,但您可能需要这个
提交('setTimer',setInterval(()=>{
提交(“倒计时”)
}, 1000))
}
}
这需要通过
dispatch
调用,而不是
commit

this.$store.dispatch('startTimer'))

我可以看看您如何调用
startTimer(状态、上下文)
startTimer(){this.resetButton=true this.$store.commit('startTimer')},它工作了!!!非常感谢你。我怎样才能增加你的声誉?我想增加你的声誉,因为你帮了我很多忙,我被困在这里,我是vuex的新手。@PeterParker你已经接受了我的答案,并对我的答案投了赞成票,所以这才是你真正需要做的。我很高兴你很高兴,我并不需要分数。我发布了一个关于firebase和vuetify中的数据表的新问题