使用react-redux访问组件外部的状态

时间:2017-07-20 12:49:50

标签: redux react-redux

我正在开发一个基于react-redux的大型应用程序。我想将一些实用程序函数添加到不包含“连接”的反应组件的js脚本中。如何在没有组件的情况下访问react-redux中的状态? mapStateToPropsmapDispatchToProps都不可用 - 我是否需要从顶级index.js文件中导出状态对象?似乎很危险。

建议欢迎!

JB

3 个答案:

答案 0 :(得分:0)

解决方法: 将商店导入到实用程序功能范围内。

导入商店(您在设置应用时会创建的商店)将提供 调度 getState 您可以用来访问状态var的方法。

src / store.js

import ReduxThunk from 'redux-thunk';
import { createStore, applyMiddleware } from 'redux';
import logger from 'redux-logger';
import reducers from './reducers';

var middleware = [ReduxThunk];
if (process.env.NODE_ENV !== 'production') {
  middleware = [...middleware, logger];
}

const createStoreWithMiddleware = applyMiddleware(...middleware)(createStore);

export default createStoreWithMiddleware(reducers);

helper.js

import store from "./store"
const { var1, var2 } = store.getState();

答案 1 :(得分:-1)

你的问题的措辞有点奇怪。如果您要求在与任何组件无关的实用程序功能中访问商店,那么您 使用React-Redux来执行此操作:)

在这种情况下,您可以将商店直接导入这些实用程序功能模块,或者从 可以访问商店功能的某个范围调用这些功能(例如thunk action creator从连接组件调度。)

有一个相关的Redux FAQ entry on why you should generally prefer to not import the store directly

答案 2 :(得分:-1)

没有非常优雅的方式来做到这一点。它的参数列表很长。