从另一个javascript文件调用Vuex getter

从另一个javascript文件调用Vuex getter,javascript,vue.js,vuex,Javascript,Vue.js,Vuex,在/store/user/getters.js中: function getLoggedIn (state) { return state.loggedIn } 在另一个文件:router-auth.js中,我尝试获取getters.getLoggedIn的值(true或false),如下所示: import user from '../store/user' const loggedIn = user.getters.getLoggedIn console.log(user.getter

在/store/user/getters.js中:

function getLoggedIn (state) {
  return state.loggedIn
}
在另一个文件:router-auth.js中,我尝试获取getters.getLoggedIn的值(true或false),如下所示:

import user from '../store/user'
const loggedIn = user.getters.getLoggedIn
console.log(user.getters.getLoggedIn)

奇怪的是,它返回函数的源代码而不是状态值!当我打印
user.getters的日志时,它确实列出了函数。

您需要访问存储的实例

const myStore = new Vuex.store({...});
这里的
myStore
就是一个实例

假设你的商店看起来像

store.js

import Vue from "vue";
import Vuex from "vuex";
import user from "./user";

Vue.use(Vuex);

const store = new Vuex.Store({
  modules: {
    user
  }
});

export default store;
import store from './store.js';

function someAuthFunction() {
    console.log(store.getters.getLoggedIn);
}
您可以通过从
store.js
导入
store
来访问该实例

路由器验证js

import Vue from "vue";
import Vuex from "vuex";
import user from "./user";

Vue.use(Vuex);

const store = new Vuex.Store({
  modules: {
    user
  }
});

export default store;
import store from './store.js';

function someAuthFunction() {
    console.log(store.getters.getLoggedIn);
}

一个简单的on-CodeSandbox

您需要导入存储实例并通过它访问getter。现在这样做只是将一个函数分配给variable@Steven,你能详细说明一下“导入商店实例”吗?我已从“../store/user”
导入了存储“user”模块
导入用户。vuex操作在Vue组件中运行良好。问题在于另一个JS文件(router auth.JS)中。谢谢。如果你把getter作为函数调用,它能工作吗?例如,
console.log(user.getters.getLoggedIn())
?是否创建存储(调用
new Vuex.store()
)或是一个模块?@Steven。用户是商店中的一个模块<代码>导出默认函数(){const Store=new Vuex.Store({modules:{user},//启用严格模式(增加开销!)//仅用于开发模式严格:process.env.dev})返回存储}
谢谢,Steven。您的代码运行良好。我的还是没有。I console.log“user”,它是一个对象。但是,
user.getters.getLoggedIn
仍然是一个文本。拉头发。。。(我在处理Vuex引导的Quasar框架内工作。我一定错过了一个步骤。)@XPLi您的存储创建是否封装在函数中?如果是这样的话,每次您从存储导入时,它都会创建一个新的存储,导致它无法工作。确实如此!我更改了存储区的index.js,如下所示,它可以工作:
let store=null导出默认函数(){store=new Vuex.store({modules:{user},plugins:[createPersistedState()],//持久化//启用严格模式(增加开销!)//仅对开发模式严格:process.env.dev})返回存储区}导出{store}
最后!周末前把它修好很好。