Доступ к избыточному хранилищу из внешнего компонента - PullRequest
0 голосов
/ 08 октября 2019

Как мне получить доступ к своему каталогу redux-store в файле helpers.js (в основном это файл, полный функций, которые помогают получать / манипулировать определенными данными, которые зависят от магазина)?

Дело в том, что яне могу просто сделать import store from './mystore' из-за того, как я экспортирую его в файл configureStore.js:

export default () => {
  let store = createStore(persistedReducer, {}, applyMiddleware(ReduxThunk));
  let persistor = persistStore(store);
  return { store, persistor };
}

, затем я импортирую его в свой App.js в PersistGate, чтобы дождаться, пока магазин получитrehydrated:

import React, { Component } from 'react';
import Router               from './Router';
import { Provider }         from 'react-redux';
import configureStore       from './configureStore';
import { PersistGate }      from 'redux-persist/integration/react';

export default class App extends Component {
  render() {
    return (
      <Provider store={configureStore().store}>
        <PersistGate loading={null} persistor={configureStore().persistor}>
          <Router />
        </PersistGate>
      </Provider>
    );
  }
}

Вот почему приложение имеет доступ к магазину через реквизит, но я не знаю, как получить доступ к этому гидратированному состоянию без React.Component.

Если я импортируюэто и вызывает store.getState() Я получаю новое хранилище (то есть новое хранилище с начальным состоянием, а не фактическим постоянным хранилищем, которое содержит локальные данные).

1 Ответ

0 голосов
/ 08 октября 2019

Поскольку все, что вы экспортируете, это функция, которая создает новый магазин, который вы не можете.

Без контекста (например, может быть, причина, по которой вы это делаете, хотя я не могу понять, что это), просто создайте хранилище вне экспортируемой по умолчанию функции.

Вы по-прежнему можете экспортировать функцию по умолчанию, а store - поименованный экспорт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...