Javascript 无法在vue组件中获取vuex状态

Javascript 无法在vue组件中获取vuex状态,javascript,vue.js,vuejs2,vuex,Javascript,Vue.js,Vuejs2,Vuex,我试图在用户登录后获取用户数据,但它返回的是Object,而不是user数组 代码 App.js(主要组件) 注意:根据我添加的loggedUser:state=>state.user,到我的getters中,但我得到的只是对象,什么都没有 关于用户数据 截图 问题: 如何在组件中获取用户数据?它不只是在值中吗 此.user.value您应该在用户登录后获得用户信息,而不是在创建应用程序组件时。因为在创建应用程序组件时,您没有登录 解决 由于无法从vuex状态获取用户信息,我决定限制从后端获取

我试图在用户登录后获取用户数据,但它返回的是
Object
,而不是user数组

代码 App.js(主要组件)

注意:根据我添加的
loggedUser:state=>state.user,
到我的
getters
中,但我得到的只是对象,什么都没有 关于用户数据

截图

问题:
如何在组件中获取用户数据?

它不只是在
值中吗


此.user.value

您应该在用户登录后获得用户信息,而不是在创建应用程序组件时。因为在创建应用程序组件时,您没有登录

解决 由于无法从vuex状态获取用户信息,我决定限制从后端获取的用户数据,并将其存储在本地存储中,这样我就可以从存储而不是vuex获取用户数据

代码
store.js

login({commit}, user){
    return new Promise((resolve, reject) => {
        commit('auth_request')
        axios({url: '/api/auth/login', data: user, method: 'POST' })
        .then(resp => {
        console.log(resp)
        const token = resp.data.access_token
        const user = resp.data.user
        console.log(user)
        localStorage.setItem('access_token', token)
        localStorage.setItem('user', JSON.stringify(user)) // added this line
        axios.defaults.headers.common['Authorization'] =  'Bearer ' + token
        commit('auth_success', token, user)
        resolve(resp)
        })
        .catch(err => {
        commit('auth_error')
        localStorage.removeItem('access_token')
        localStorage.removeItem('user')
        reject(err)
        })
    })
},
App.vue(主要组件)

我删除了
created()
函数并添加了
mounted()
函数

mounted() {
    const user = JSON.parse(localStorage.getItem('user'));
    const state = user
        ? { status: { loggedIn: true }, user }
        : { status: {}, user: null };
        if(user){
            this.user = user.name
        } else {
            console.log('nothing')
        }
}
这样我就不会有任何错误,无论是在有访问者的时候,还是在有登录用户的时候。而且我可以在他们登录后立即获得我的用户名


希望对其他人有用。

在哪一部分?!在控制台的屏幕截图中,this.user=this.$store.getters.loggedUser
之后,它清楚地显示了一个值键。您是否尝试过扩展它?您提到的该值的屏幕截图记录响应
响应数据.user
响应数据
。如果你想知道哪些评论不适合长期讨论,你会很感兴趣;我尝试过(用空对象{}声明变量初始值并在app组件的created()中打印),结果显示与您的完全相同。因此,问题是您在设置getter之前调用getter。
login({commit}, user){
    return new Promise((resolve, reject) => {
        commit('auth_request')
        axios({url: '/api/auth/login', data: user, method: 'POST' })
        .then(resp => {
        console.log(resp)
        const token = resp.data.access_token
        const user = resp.data.user
        console.log(user)
        localStorage.setItem('access_token', token)
        localStorage.setItem('user', JSON.stringify(user)) // added this line
        axios.defaults.headers.common['Authorization'] =  'Bearer ' + token
        commit('auth_success', token, user)
        resolve(resp)
        })
        .catch(err => {
        commit('auth_error')
        localStorage.removeItem('access_token')
        localStorage.removeItem('user')
        reject(err)
        })
    })
},
mounted() {
    const user = JSON.parse(localStorage.getItem('user'));
    const state = user
        ? { status: { loggedIn: true }, user }
        : { status: {}, user: null };
        if(user){
            this.user = user.name
        } else {
            console.log('nothing')
        }
}