作者:诺亚方舟菲芘袁子陽 | 来源:互联网 | 2023-10-15 12:35
刚学习vuex,今天在写登录注册时,使用了vuex保存了登录成功时,服务端返回的数据,但是在axios请求时,却提示“TypeError:Cannotreadpropertydispa
刚学习vuex,今天在写登录注册时,使用了vuex保存了登录成功时,服务端返回的数据,但是在axios请求时,却提示“TypeError: Cannot read property 'dispatch' of undefined”
代码如下:
state.js:
1 2 3 4 5 6 7 8 9
| const state = {
userInfo: {
avatar: '', // 登录头像
nickname: '', // 登录昵称
signature: '', // 个性签名
userId: '', // 用户Id
token: '' // token
}
} |
getters.js
1
| export const getUserInfo = state => state.userInfo |
mutation-types.js
1
| export const SET_USERINFO = 'SET_USERINFO' |
mutations.js
1 2 3 4 5
| const mutatiOns= {
[types.SET_USERINFO] (state, user) {
state.userInfo = user
}
} |
actions.js
1 2 3 4
| setUserInfo ({commit}, user) {
window.window.sessionStorage.user = JSON.stringify(user)
commit(types.SET_USERINFO, user)
} |
methods: {
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| ...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))
}
} |
}
1 2 3
| 运行结果:
![clipboard.png](/img/bV1988) |