Vuex中跨组件失效(passportjs传值)(已非正常方式解决)

RT,下面是我的vuex

const state = () => ({
  user: {}
})

const mutations = {
  setUser (state, val) {
    state.user = val
    console.log(JSON.parse(JSON.stringify(state.user)))
  }
}

const actions = {
  setUser: ({ commit }, user) => {
    commit('setUser', user)
  }
}

export default { namespaced: true, state, mutations, actions } 

console.log(JSON.parse(JSON.stringify(state.user)))可以成功打出来如下的东西YUL%KWPV3BHY17$8$3HA_}E.png
但使用mapstate在网页上打出的时候是一个空的括号,问一下有什么可以解决的办法吗谢谢

<Content class="content_background">
    {{users}}
</Content>
import { mapState } from 'vuex'
export default {
  computed: {
    ...mapState({ users: state => state.usermodal.user.user })
  }
}
阅读 2.4k
2 个回答
const state = {
  user: {}
}

猜你state改成这样就能响应了

新手上路,请多包涵

好像是这样的,我这个问题感觉应该是一个很小很小的bug
就是user这个东西传过来的时候是passportjs登录之后返回的一个对象(这个忘说了是我的疏忽抱歉大家)
但是这个对象好像返回时候产生的bug
就是它根本没法在Vuex中进行数据赋值
这个我在后台多加了一个获取的接口才解决的,谢谢大家

 async nuxtServerInit ({ commit }, { req, app }) {
    let { status: mistatus, data: { micode, miresult } } = await app.$axios.get('/manager/myself_infomation/getInfo')
    if (mistatus === 200 & micode === 0) {
      commit('usermodal/setUser', {
        user: miresult.filter(item => item._id.length).map(item => {
          return {
            id: item._id,
            name: item.adminname,
            sex: item.adminsex,
            email: item.adminemail,
            workdate: item.adminworkdate,
            photo: item.adminphoto,
            phonenumber: item.adminphonenumber,
            password: item.adminpassword,
            type: item.admintype,
            wages: item.adminwages
          }
        })
      })
    }
  }
router.get('/getInfo', async ctx => {
  try {
    ctx.body = {
      micode: 0,
      miresult: [ctx.req.user.result]
    }
  } catch (e) {
    ctx.body = {
      micode: -1,
      miresult: []
    }
  }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题