Javascript 无法读取属性';提交';未定义VUEX的定义
请帮助我,它总是说无法读取未定义的属性“commit”。这是我在store.js中的代码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
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中的数据表的新问题