在 nuxt 中出现此错误:[vuex] 不要在突变处理程序之外改变 vuex 存储状态
Getting this error in nuxt: [vuex] do not mutate vuex store state outside mutation handlers
我正在使用 nuxt.js,我想将当前歌曲时间传递给 vuex。
但是传递数据只能工作一次。
这是我的数据:
currentSongTime: {
second: 0,
minute: 0,
total: 0
}
挂载:
this.WaveSurfer.on('seek', (position) => {
this.currentSongTime.second = parseInt(position * this.WaveSurfer.getDuration() % 60);
this.currentSongTime.minute = parseInt((this.WaveSurfer.getCurrentTime() / 60) % 60);
this.currentSongTime.total = parseInt(position * this.WaveSurfer.getDuration());
this.$store.commit('setCurrentSongTime', this.currentSongTime);
});
index.js (vuex):
export const state = () => ({
currentAudioTime: {}
});
export const mutations = {
setCurrentSongTime(state, val) {
state.currentAudioTime = val;
}
};
它只工作了一次,之后,我收到了这个错误信息:
[vuex] do not mutate vuex store state outside mutation handlers.
我不知道该怎么办?
您直接将组件数据设置为 Vuex
状态,这会导致问题,因为当您修改组件数据时,您也会直接在突变处理程序之外改变状态。快速修复是在将其分配为 vuex
状态之前克隆此对象:
this.$store.commit('setCurrentSongTime', JSON.parse(JSON.stringify(this.currentSongTime)));
我正在使用 nuxt.js,我想将当前歌曲时间传递给 vuex。
但是传递数据只能工作一次。
这是我的数据:
currentSongTime: {
second: 0,
minute: 0,
total: 0
}
挂载:
this.WaveSurfer.on('seek', (position) => {
this.currentSongTime.second = parseInt(position * this.WaveSurfer.getDuration() % 60);
this.currentSongTime.minute = parseInt((this.WaveSurfer.getCurrentTime() / 60) % 60);
this.currentSongTime.total = parseInt(position * this.WaveSurfer.getDuration());
this.$store.commit('setCurrentSongTime', this.currentSongTime);
});
index.js (vuex):
export const state = () => ({
currentAudioTime: {}
});
export const mutations = {
setCurrentSongTime(state, val) {
state.currentAudioTime = val;
}
};
它只工作了一次,之后,我收到了这个错误信息:
[vuex] do not mutate vuex store state outside mutation handlers.
我不知道该怎么办?
您直接将组件数据设置为 Vuex
状态,这会导致问题,因为当您修改组件数据时,您也会直接在突变处理程序之外改变状态。快速修复是在将其分配为 vuex
状态之前克隆此对象:
this.$store.commit('setCurrentSongTime', JSON.parse(JSON.stringify(this.currentSongTime)));