从另一个javascript文件调用Vuex getter
在/store/user/getters.js中:从另一个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
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}
最后!周末前把它修好很好。