鍍金池/ 問答/HTML/ 使用vuex,在請求數(shù)據(jù)時提示" Cannot read proper

使用vuex,在請求數(shù)據(jù)時提示" Cannot read property 'dispatch' of undefined"

剛學(xué)習(xí)vuex,今天在寫登錄注冊時,使用了vuex保存了登錄成功時,服務(wù)端返回的數(shù)據(jù),但是在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’,但是正常數(shù)據(jù)又是能夠請求到的,請問是哪里出了問題?
      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)) 
  }
}

}

運(yùn)行結(jié)果:

![clipboard.png](/img/bV1988)
回答
編輯回答
孤慣

action.js里是怎樣的,

const actions=[
setUserInfo ({commit}, user) {
    window.window.sessionStorage.user = JSON.stringify(user)
    commit(types.SET_USERINFO, user)
}]

這樣的嗎?
然后Vue.use(Vuex)調(diào)用了嗎

2018年7月25日 05:31
編輯回答
愛是癌

找到原因了,是因?yàn)槲覜]有在main.js中引用配置好vuex

2017年3月7日 16:19