Javascript 在另一个模块操作中获取vuex模块状态

Javascript 在另一个模块操作中获取vuex模块状态,javascript,vue.js,vuejs2,vuex,Javascript,Vue.js,Vuejs2,Vuex,我对vuex商店组件有点困惑 如何获取另一个模块的状态? 我尝试了不同的方法从存储中获取数据,并且总是得到Observer对象。向观察者敲打的正确方法是什么 如果我试图直接从这个对象获取任何东西,比如rootState.user.someVariable,那么我会得到未定义的响应 从组件获取状态没有问题 编辑。添加代码 用户模块 import * as Constants from './../../constants/constants' import * as types from '..

我对vuex商店组件有点困惑

如何获取另一个模块的状态? 我尝试了不同的方法从存储中获取数据,并且总是得到Observer对象。向观察者敲打的正确方法是什么

如果我试图直接从这个对象获取任何东西,比如
rootState.user.someVariable
,那么我会得到未定义的响应

从组件获取状态没有问题

编辑。添加代码

用户模块

import * as Constants from './../../constants/constants'
import * as types from '../mutation-types'
import axios from 'axios'

const state = {  user: [] }

    const getters = {
       getUser: state => state.user
    }

const actions = {
getUserAction ({commit}) {
    axios({method: 'GET', 'url': Constants.API_SERVER + 'site/user'})
      .then(result => {
        let data = result.data
        commit(types.GET_USER, {data})
      }, error => {
        commit(types.GET_USER, {})
        console.log(error.toString())
      })
  }
}

const mutations = {
 [types.GET_USER] (state, {data}) {
    state.user = data
  }
}

export default { state, getters, actions, mutations }
突变

export const GET_LANGS = 'GET_LANGS'
export const GET_USER = 'GET_USER'
贮藏

主应用程序

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store/index'

Vue.config.productionTip = false

    new Vue({
      el: '#app',
      router,
      store,
      template: '<App/>',
      components: { App }
    })
从“Vue”导入Vue
从“./App”导入应用程序
从“./路由器”导入路由器
从“./store/index”导入存储
Vue.config.productionTip=false
新Vue({
el:“#应用程序”,
路由器,
商店,
模板:“”,
组件:{App}
})
朗模块,这是我试着去商店的地方

import * as types from '../mutation-types'
import {axiosget} from '../../api/api'    

const state = {  langList: [] }

const getters = {
  getLangs: state => state.langList
}

const actions = {
// this two action give me similar result
  getLangsAction (context) {
    axiosget('lang') // described below
  },
  getAnotherLangsAction (context) {
    console.log(context.rootState.user) <----get Observer object
  }
}

const mutations = {
  [types.GET_LANGS] (state, {data}) {
    state.langList = data
  }
}

 export default { state, getters, actions, mutations }
import*作为“../types”中的类型
从“../../api/api”导入{axiosget}
const state={langList:[]}
常量getters={
getLangs:state=>state.langList
}
常量动作={
//这两个动作给了我类似的结果
getLangsAction(上下文){
axiosget('lang')//如下所述
},
getAnotherLangsAction(上下文){
console.log(context.rootState.user){
if(actionError&&actionError==='function'){
//实施这个
}
})
}
如果我通过计算属性中的MapGetter获取状态,就不会有问题

<template>
    <div>
   {{user.access_token.token}}
    </div>
</template>

<script>
  import { mapGetters } from 'vuex'

  export default {
    name: 'ArticlesList',
    computed: mapGetters({
      user: 'getUser'
    }),
    created () {
      this.$store.dispatch('getLangsAction')
      this.$store.dispatch('getAnotherLangsAction')
    }
  }
</script>   

{{user.access_token.token}
从“vuex”导入{mapGetters}
导出默认值{
名称:'ArticleList',
计算:mapGetters({
用户:“getUser”
}),
创建(){
此.$store.dispatch('getLangsAction'))
此.$store.dispatch('getAnotherLangsAction'))
}
}

我在这段代码中尝试做的是——在主站点中获取用户访问令牌(登录后),所有进一步的数据操作都将通过api主机生成。

假设您希望从Vuex存储模块
user.js中的对象
userDetails
获取属性
userId

userDetails:{
  userId: 1,
  username: "Anything"
}
您可以在
操作

authenticateUser(vuexContext, details) {
  userId = vuexContext.rootState.user.userDetails.userId;
}

注意:在
rootState
之后和文件名
user
之前,如果存储模块文件位于嵌套文件夹中,请添加其路径。

Define
module
。您没有给我们提供太多的信息,您能提供一个您想要的示例,而不是一些控制台日志的屏幕截图……可能是
rootState>应该可以工作。向我们展示使用
rootState
失败的代码。
userDetails:{
  userId: 1,
  username: "Anything"
}
authenticateUser(vuexContext, details) {
  userId = vuexContext.rootState.user.userDetails.userId;
}