Подтвердить что ты не робот

React Native: HeadslessJS и Redux - Как получить доступ к хранилищу из задачи

У нас есть приложение ReactNative, которое использует функции сокращения, редукции-persist и HeadlessJS. Эта задача должна иметь доступ к хранилищу. Поскольку задача запускается без загрузки всего приложения (и поэтому не имеет доступа по умолчанию), мы думали, что можем просто создать хранилище внутри задачи, чтобы оно было регидратировано с помощью сокращения-persist. Оказывается, однако, что созданный таким образом магазин отличается от такового в приложении: после запуска они содержат разные значения. Мы протестировали это несколькими способами, и это действительно проблема с магазинами (а не с действиями, например) Как нам получить доступ к хранилищу Redux из задачи HeadlessJS?

Соответствующий код: store/configure.js:

configureStore = (client) => {
  const middleware = createMiddleware(client);
  const finalCreateStore = applyMiddleware(thunk, middleware, logger)(createStore);
  const store = finalCreateStore(rootReducer, undefined, autoRehydrate());

  return store;
};

При использовании (как в приложении, так и в сервисе):

const client = new ApiClient();
const store = configureStore(client);
client.setStore(store);
persistStore(store, {
  storage: AsyncStorage,
}

В приложении мы просто используем Провайдер от реакции-редукта, чтобы использовать хранилище, в сервисе мы используем store.dispatch.

4b9b3361