无法通过getter vuex vuejs访问状态

Posted

技术标签:

【中文标题】无法通过getter vuex vuejs访问状态【英文标题】:Cannot access state by getters vuex vuejs 【发布时间】:2021-03-28 01:40:49 【问题描述】:

我是 vuex 的新手,我想通过 getter getUser() 方法访问处于状态中的用户对象,我试图调用它 console.log(this.$store.getters.getUser); 在挂载方法中但没有结果。 我试图在突变中控制日志并返回用户对象。 我还关注了文档并搜索了解决方案,但没有任何反应

我还缺少什么?

store.js

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

const store = new Vuex.Store(
state: 
    user: ,
,
getters: 
    getUser: state => 
       return state.user
     
    
,
mutations: 
    auth_user(state,data) 
        state.user = data
    
 ,
actions: 
    fetchAuthUser(context)
        axios.get('/user-data').then(response => 
            context.commit("auth_user",response.data)
        ).catch();
    
, 

 )


 export default store

索引.js

  mounted()
  // this.auth_user;
   this.getCategories();
   this.$store.dispatch('fetchAuthUser', this.auth_user);
    console.log(this.$store.getters.getUser);
,

【问题讨论】:

试试console.log(this.$store.state.state.user) 【参考方案1】:

您的操作是异步的,应该返回一个承诺。

fetchAuthUser(context)
    return axios.get('/user-data').then(response => 
        context.commit("auth_user",response.data)
    ).catch();

在你的mounted中你可以使用then来处理数据。

mounted()
   // this.auth_user;
   this.getCategories();
   this.$store.dispatch('fetchAuthUser', this.auth_user).then(() => 
      console.log(this.$store.getters.getUser);
   );

【讨论】:

那么请考虑接受答案。

以上是关于无法通过getter vuex vuejs访问状态的主要内容,如果未能解决你的问题,请参考以下文章

如何使用另一个模块中的模块中的getter进行Vuex状态

vuex状态管理2

vue & vuex getter vs 通过道具传递状态

Vuex getter无法更新状态更改

如何从另一个 vuex 模块访问 getter?

无法在模块之外访问 Vuex getter