我正在开发一个基于react-redux的大型应用程序。我想将一些实用程序函数添加到不包含“连接”的反应组件的js脚本中。如何在没有组件的情况下访问react-redux中的状态? mapStateToProps
和mapDispatchToProps
都不可用 - 我是否需要从顶级index.js文件中导出状态对象?似乎很危险。
建议欢迎!
JB
答案 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)
没有非常优雅的方式来做到这一点。它的参数列表很长。