【发布时间】:2016-11-24 06:55:29
【问题描述】:
我有一个帮助类,它提供有关登录用户的信息。我想把它作为一个静态方法并在几个地方使用它(不是反应组件)
如何在类模型中访问 redux 存储值?
【问题讨论】:
我有一个帮助类,它提供有关登录用户的信息。我想把它作为一个静态方法并在几个地方使用它(不是反应组件)
如何在类模型中访问 redux 存储值?
【问题讨论】:
如果您可以在应用程序中管理它,那么使用依赖注入 (DI) 传递它会比使用全局变量、静态变量或单例变量更简洁(并且更易于测试)。在一个简单的形式中,你可以像这样在构造函数中传递它:
var store = createStore(...);
var app = new AppClass(store);
【讨论】:
如果您没有使用 Webpack 之类的打包工具,Lukas Katayama 的回答应该可以使用 window.store = createStore(...),但如果您使用的是打包工具,您还可以通过导出并在需要的位置导入来公开您的 redux 存储。
//store.js
export const store = createStore(...);
//other file
import { store } from './store.js';
const someFuncOrClass = (...) => {
const user = store.getState().userInfo;
}
【讨论】:
一种方法可以设置一个全局变量
window.store = createStore(...)
并使用它,访问 window.store
【讨论】:
看起来像一个简单的实现。您可以在 creatStore(...) 所在的同一文件中创建用于存储的 getter。
store.js
import { createStore } from 'redux';
let store = {};
export default function store(...) {
/*
* things to do before creating store
*/
store = createStore(...);
return store;
}
export function getStore() {
return store;
}
helper.js
import { getStore } from './store';
export function getUserInfo() {
const store = getStore();
const globalState = store.getState();
return globalState.userInfo;
}
【讨论】: