Включение промежуточного программного обеспечения redux-обещания и redux-саги, по-видимому, вызывает проблемы - PullRequest
0 голосов
/ 07 марта 2020

Я использую исходную кодовую базу create-реагировать-приложение и пытаюсь настроить промежуточное программное обеспечение redux-saga и redux-обещание. Однако redux-сага кажется отключенной независимо от того, как я к ней подхожу, или иногда сообщит об ошибке, указывающей, что applyMiddleware не был запущен для объекта sagaMiddleware. (Пожалуйста, извините за слегка запутанный пример кода.)

import React from 'react';
import ReactDOM from 'react-dom';
import * as serviceWorker from './serviceWorker';

import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import ReduxPromise from 'redux-promise';
import { Route, BrowserRouter, Switch } from 'react-router-dom';

import reducersP1 from './p1/reducers';
import reducersP2 from './p2/reducers';

import Wrapper from './global/containers/wrapper';
import AppWrap from "./p1/components/app_wrap";
import AppWrap2 from "./p2/containers/app_wrap";

import createSagaMiddleware from 'redux-saga';
import rootSaga from './p2/sagas';

const appConfig = {
  p1: {
    reducers: reducersP1,
    component: AppWrap,
    namespace: "p1",
    api: '/api'
  },
  p2: {
    reducers: reducersP2,
    component: AppWrap2,
    namespace: "p2",
    api: '/api2'
  }
};


const { api, reducers, component, namespace } = process.env.REACT_APP_PORTFOLIO==="1"? appConfig.p1: appConfig.p2;
const WrapComponent = component;
export const apiPath = api;


const sagaMiddleware = createSagaMiddleware();

// Approach A.
const createStoreWithMiddleware = applyMiddleware(sagaMiddleware, ReduxPromise)(createStore);
const store = createStoreWithMiddleware(reducers);

// Approach B.
// const storeWithMiddleware = createStore(
//     reducers,
//     applyMiddleware(sagaMiddleware, ReduxPromise)
// );
// const store = storeWithMiddleware;

sagaMiddleware.run(rootSaga);

ReactDOM.render(
  <Provider store={ store }>
    <BrowserRouter>
      <Switch>
        <Route path="*" render={ (history) => <Wrapper namespace={ namespace }><WrapComponent history={ history } /></Wrapper> } />
      </Switch>
      </BrowserRouter>
  </Provider>
  ,
  document.getElementById('root')
);

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
serviceWorker.unregister();

1 Ответ

0 голосов
/ 08 марта 2020

Кажется, Redx-сага не была правильно установлена. Исправлено с помощью:

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