vuex 模块化之后 this.$store.dispatch('user/login') 会报错 unknown action type: user/login
但是用this.$store.dispatch('login')就没问题, 但是login是在user模块里面的。
store/index.js 文件
import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters.js'
import user from './modules/user'
Vue.use(Vuex)
const store = new Vuex.Store({
modules: {
user
},
getters
})
export default store
store/modules/user.js 文件
import Vue from 'vue'
import Vuex from 'vuex'
import { login } from '@/api/home'
const state = {
jwt: ''
}
const mutations = {
SET_JWT: (state, jwt) => {
state.jwt = jwt
}
}
const actions = {
login({ commit }, userInfo) {
return new Promise((resolve, reject) => {
login(userInfo).then(response => {
resolve()
}).catch(error => {
reject(error)
})
})
}
}
export default {
namespace: true,
state,
mutations,
actions
}
3 个回复
Alsey_
namespace应该写作namespaced
p***@gmail.com
这里确实需要写
namespaced
2***@qq.com
我也遇到相同的问题?这个是应该怎么解决,模块的getter和mutations、state都生效,就是action找不到。用的就是“”namespaced“”