在组件vuejs之外访问存储

cap*_*ono 15 ecmascript-6 vue.js vue-component vuex vuejs2

我有一个用于配置OpenID Connect身份验证的文件

export const authMgr = new Oidc.UserManager({
  userStore: new Oidc.WebStorageStateStore(),
  authority: **appsetting.oidc**
})
Run Code Online (Sandbox Code Playgroud)

我想访问我的状态以获得appsetting的价值.

我这样做了:

import store from './store'

const appsetting = () => store.getters.appsetting
Run Code Online (Sandbox Code Playgroud)

但我的appsetting总是返回undefined

我错过了什么?

商店:

app.js

const state = {
  appsetting: appsetting,
}

export {
  state 
}
Run Code Online (Sandbox Code Playgroud)

getters.js

const appsetting = state => state.appsetting

export {
  appsetting
}
Run Code Online (Sandbox Code Playgroud)

index.js

export default new Vuex.Store({
  actions,
  getters,
  modules: {
    app
  },
  strict: debug,
  plugins: [createLogger]
})
Run Code Online (Sandbox Code Playgroud)

当我打印值时store.getters,它返回:

{
  return __WEBPACK_IMPORTED_MODULE_2__store__["a" /* default */].getters;
}
Run Code Online (Sandbox Code Playgroud)

没有实际的商店对象

Sha*_*man 32

尝试使用大括号导入"store"

import {store} from '../store/index'

store.getters.appSettings
Run Code Online (Sandbox Code Playgroud)

另一种选择是从vue属性访问

import Vue from 'vue'

Vue.store.getters.appSettings
Run Code Online (Sandbox Code Playgroud)

  • 如何访问嵌套模块的 getter(并传递参数)的示例是 `const hasTextAutomationEnabled = store.getters['account/hasFeature']('text-automation');`(您通常可以使用点表示法,但由于模块是用正斜杠“/”引用的,因此通过带有方括号的数组语法更容易获取属性。如果您的 getter 没有参数,请勿将“(param)”放在结尾。) (5认同)