使用vuex,在请求数据时提示" Cannot read property 'dispatch' of undefined"
刚学习vuex,今天在写登录注册时,使用了vuex保存了登录成功时,服务端返回的数据,但是在axios请求时,却提示“TypeError: Cannot read property 'dispatch' of undefined”
代码如下:
state.js:
const state = {
userInfo: {
avatar: '', // 登录头像
nickname: '', // 登录昵称
signature: '', // 个性签名
userId: '', // 用户Id
token: '' // token
}
}
getters.js
export const getUserInfo = state => state.userInfo
mutation-types.js
export const SET_USERINFO = 'SET_USERINFO'
mutations.js
const mutations = {
[types.SET_USERINFO] (state, user) {
state.userInfo = user
}
}
actions.js
setUserInfo ({commit}, user) {
window.window.sessionStorage.user = JSON.stringify(user)
commit(types.SET_USERINFO, user)
}
methods: {
...mapActions({
setUserInfo: 'setUserInfo'
}),
onLogin () {
if (this.loginstate.$invalid === false) {
var datas = '&mobile=' + this.phonenumber + '&password=' + this.password
this.$axios.post('/api/Auth/Login', datas, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(res => {
let user = {
avatar: res.data.data.avatar,
nickname: res.data.data.nickname,
signature: res.data.data.signature,
token: res.data.data.token,
userId: res.data.data.user_id
}
this.setUserInfo(user) // 加上这行代码,就会在catch中提示我‘TypeError: Cannot read property 'dispatch' of undefined’,但是正常数据又是能够请求到的,请问是哪里出了问题?
console.log(this.setUserInfo(user))
if (res.data.code != 0) {
Toast({
message: res.data.data.msg,
position: 'bottom'
})
} else {
this.$router.push('/home')
}
})
.catch(err => console.log(err))
}
}
}
运行结果:
![clipboard.png](/img/bV1988)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你
action.js
里是怎样的,这样的吗?
然后
Vue.use(Vuex)
调用了吗找到原因了,是因为我没有在main.js中引用配置好vuex