我正在创建Redux中间件,以在React Native应用程序中使用Socket.IO的单个全局实例。到目前为止,一切工作正常,除了一件事:当通过套接字事件接收数据时,我无法存储数据,因为我需要分派一个操作来这样做,因为我无权访问商店。
根据Redux文档中引用的示例https://gist.github.com/markerikson/3df1cf5abbac57820a20059287b4be58以及其他一系列在线示例,我应该能够访问中间件中的商店,但是商店是一个空对象。
这是中间件:
const socketMiddleware = (store) => next => action => {
// ...
return next(action);
}
export default socketMiddleware;
这是商店的创建:
export default function configureStore() {
const middlewares = [
thunkMiddleware.withExtraArgument({ api }),
errorMiddleware,
socketMiddleware,
promiseMiddleware(),
isDev() && logger,
].filter(Boolean);
const store = createStore(
persistedReducer,
composeWithDevTools(applyMiddleware(...middlewares)),
);
const persistor = persistStore(store);
return { store, persistor };
}
感谢您的帮助!
编辑:更新的问题
答案 0 :(得分:0)
我不确定,但是如果redux商店系统的工作方式类似于Vue的系统,那么您应该能够将商店导入所需的文件中,并从导入的包中访问商店。
import store from 'path/to/store';
// ...
store.dispatch('action', data) ;
答案 1 :(得分:0)
问题不是商店不是空对象。由于一个愚蠢的错误,我无法调度动作...我尝试向其发送数据的化简器不属于combinedReducers()
的一部分,因此从未收到动作。