VueX-在不同于动作的模块中分配动作

jed*_*edi 2 vue.js vuex vuejs2

我想清除上的用户数据logout,因此从auth模块I执行dispatch了在模块中定义的操作,ride但出现错误:

[vuex] unknown local action type: clearUserData, global type: auth/clearUserData

这是我的代码:

商店/模块/auth.js

export const namespaced = true

export const mutations = {
  clearAuthData(state){
    state.apiToken = null
    state.signedIn = false
  }
}

export const actions = {
  logout({ commit, dispatch }) {
    commit('clearAuthData'))
    dispatch('ride/clearUserData', { root: true })

  }
}
Run Code Online (Sandbox Code Playgroud)

商店/模块/ride.js

export const namespaced = true

export const state = {
  data: []
}

export const mutations = {
  CLEAR_USER_DATA(state){
    state.data = []
  }
}

export const actions = {  
  clearUserData({ commit }) {
    commit('CLEAR_USER_DATA')
  }
}
Run Code Online (Sandbox Code Playgroud)

store / store.js

import * as auth from './modules/auth'
import * as ride from './modules/ride'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    loading: false
  },
  modules: {
    auth,
    ride
  }
})
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

ton*_*y19 7

您对的使用dispatch()错误地传递{ root: true }第二个参数,该参数用于有效负载。选项应为第3个:

// dispatch('ride/clearUserData', { root: true }) // FIXME: options passed as payload
dispatch('ride/clearUserData', null, { root: true })
Run Code Online (Sandbox Code Playgroud)