vue 首次登陆成功进入页面获取不到store值?

computed: {
    ...mapState({
        userInfo: (state) => state.user.userInfo,
    }),
},

首次登录进入页面时,这个值在页面上可以获取到

<div class="wl-left">
   <span>{{userInfo.username}}:</span>
</div>

但是在方法里面调用却是 undefined

async getTopTenData(params) {
    let data;
    this.searchLoading = true
    try {
        data = await getCommTime({
            account: this.userInfo.username,
            dimension: this.activeToggle,
            params
        })
    } catch (error) {
        throw new Error(error)
    } finally {
        this.searchLoading = false
    }
    return { data: data.comm_task_list }
},

求教?

----------------------------补充-------------------------
这是store里面获取的username,并保存到localStorage里面:

const actions = {
  getUserInfo({
    commit,
    dispatch,
    state
  }) {
    axios({
      method: 'get',
      url: '/gateway/api/userInfo',
      headers: {
        'admin-gateway-token': state.token
      }
    }).then(res => {
      const {
        data,
        code,
        msg
      } = res.data
      if (code === 0) {
        localStorage.setItem('userInfo', data.username)
        commit('SET_USERINFO', data)
      } else {
        console.log('获取人员信息失败:', res)
        if (res.data.code === 2000) {
          dispatch('app/logOut', {}, {
            root: true
          })
        }
        Message({
          type: 'error',
          message: '获取人员信息失败:' + msg
        })
      }
    }, res => {
      Message({
        type: 'error',
        message: '获取人员信息失败:' + res
      })
    })
  },
阅读 1.6k
4 个回答
      if (code === 0) {
        localStorage.setItem('userInfo', data.username)
        commit('SET_USERINFO', data)
      } else {

改成:

      if (code === 0) {
        localStorage.setItem('userInfo', data)
        commit('SET_USERINFO', data)
      } else {
  1. userInfo 本地localstorage储存一份;
  2. 在main.js初始化vue时,生命周期created ,读取localstorage赋值到vuexuserInfo;

因为有可能登陆刷新了页面,导致userInfo数据丢失

有可能是在方法调用前,业务逻辑上做了其他的处理,造成了 userInfo 数据丢失,需要排查在方法前的逻辑处理。
需要一个比较完整的交互流程,否则根据目前描述,只能猜测是数据丢失造成,具体哪一步造成,为什么无法定位。

localStorage 里面只存了 username,而非对象,如果再次从 localStorage 里面获取,拿到的就不是一个对象,而只是一个名称,则就没有 username 的属性

getUserInfo 没地方调用它哇

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏