Vue.js 在nuxt中获取此错误:[vuex]不要在变异处理程序之外变异vuex存储状态

Vue.js 在nuxt中获取此错误:[vuex]不要在变异处理程序之外变异vuex存储状态,vue.js,vuex,nuxt.js,wavesurfer.js,Vue.js,Vuex,Nuxt.js,Wavesurfer.js,我正在使用nuxt.js,我想将当前歌曲时间传递给vuex 但是传递数据只工作一次 这是我的数据: currentSongTime: { second: 0, minute: 0, total: 0 } 安装: this.WaveSurfer.on('seek', (position) => { this.currentSongTime.second = parseInt(position * t

我正在使用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):

它只工作一次,之后,我收到以下错误消息:

[vuex] do not mutate vuex store state outside mutation handlers.

我不知道该怎么办?

您直接将组件数据设置为
Vuex
状态,这会导致问题,因为当您修改组件数据时,您还直接在变异处理程序之外变异状态。快速修复方法是在将此对象指定为
vuex
状态之前克隆它:

this.$store.commit('setCurrentSongTime', JSON.parse(JSON.stringify(this.currentSongTime)));
this.$store.commit('setCurrentSongTime', JSON.parse(JSON.stringify(this.currentSongTime)));