React Native / Redux - магазин пуст в промежуточном ПО - PullRequest
0 голосов
/ 27 февраля 2019

Я создаю промежуточное ПО Redux для использования единого и глобального экземпляра Socket.IO в приложении React Native.Пока что все работает, за исключением одного: при получении данных через события сокета я не могу сохранить их, потому что для этого мне нужно было бы выполнить действие, чего я не могу сделать, потому что у меня нет доступа кstore.

В соответствии с этим примером https://gist.github.com/markerikson/3df1cf5abbac57820a20059287b4be58, который цитировался в Redux doc, и кучей других онлайн-примеров, я смогу получить доступ к магазину в промежуточном программном обеспечении, но магазинпустой объект.

Это промежуточное ПО:

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 голосов
/ 28 февраля 2019

Проблема не в том, что магазин был пустым объектом.Я не смог отправить действие из-за глупой ошибки ... Редуктор, на который я пытался отправить данные, не был частью combinedReducers(), и поэтому никогда не получал действие.

0 голосов
/ 27 февраля 2019

Я не уверен в этом, но если система хранилища примитивов работает так же, как у Vue, вы сможете импортировать хранилище в тот файл, где вам это нужно, и получить доступ к хранилищу из импортированного вами пакета.

import store from 'path/to/store';

// ...
store.dispatch('action', data) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...