React Native / Redux-中间件中的存储为空

时间:2019-02-27 15:47:09

标签: react-native redux socket.io

我正在创建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 };
}

感谢您的帮助!

编辑:更新的问题

2 个答案:

答案 0 :(得分:0)

我不确定,但是如果redux商店系统的工作方式类似于Vue的系统,那么您应该能够将商店导入所需的文件中,并从导入的包中访问商店。

import store from 'path/to/store';

// ...
store.dispatch('action', data) ;

答案 1 :(得分:0)

问题不是商店不是空对象。由于一个愚蠢的错误,我无法调度动作...我尝试向其发送数据的化简器不属于combinedReducers()的一部分,因此从未收到动作。