Uncaught TypeError: Предоставление корневого Epic для создания EpicMiddleware (rootEpic) - PullRequest
0 голосов
/ 07 сентября 2018

Я получаю эту ошибку

Uncaught TypeError: Предоставление корневого Epic для createEpicMiddleware(rootEpic) больше не поддерживается, вместо этого используйте epicMiddleware.run(rootEpic)

При простом использовании

import 'rxjs'
import { createStore, combineReducers, applyMiddleware } from 'redux'
import { reducer as formReducer } from 'redux-form'
import thunk from 'redux-thunk'
import promise from 'redux-promise-middleware'
import { createEpicMiddleware, combineEpics } from 'redux-observable'

import app from './app'

// Bundling Epics
const rootEpic = combineEpics(
)

// Creating Bundled Epic
const epicMiddleware = createEpicMiddleware(rootEpic)

// Define Middleware
const middleware = [
  thunk,
  promise(),
  epicMiddleware
]

// Define Reducers
const reducers = combineReducers({
  form: formReducer
})

// Create Store
export default createStore(reducers,window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(), applyMiddleware(...middleware))

Пожалуйста, помогите решить эту проблему

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Попробуйте это

import 'rxjs'
import { createStore, combineReducers, applyMiddleware } from 'redux'
import { reducer as formReducer } from 'redux-form'
import thunk from 'redux-thunk'
import promise from 'redux-promise-middleware'
import { createEpicMiddleware, combineEpics } from 'redux-observable'

import app from './app'

// Bundling Epics
const rootEpic = combineEpics(
)

// Creating Bundled Epic
const epicMiddleware = createEpicMiddleware();

// Define Middleware
const middleware = [
  thunk,
  promise(),
  epicMiddleware
]

// Define Reducers
const reducers = combineReducers({
  form: formReducer
})

// Create Store
const store = createStore(reducers,window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__(), applyMiddleware(...middleware))
epicMiddleware.run(rootEpic);
export default store

официальная документация createEpicMiddleware .

0 голосов
/ 01 октября 2018

Во-первых, взгляните на этот документ: Официальный документ Redux-Observable , поскольку мы используем новейшую версию Redux-Observable, тогда обзор его документа весьма полезен.

После просмотра документа давайте рассмотрим небольшой пример проекта (приложение Counter):

Это файл root.js, который содержит мои эпики и редукторы после объединения.

// This is a sample reducers and epics for a Counter app.
import { combineEpics } from 'redux-observable';
import { combineReducers } from 'redux';


import counter, {
  setCounterEpic,
  incrementEpic,
  decrementEpic
} from './reducers/counter';

// bundling Epics
export const rootEpic = combineEpics(
  setCounterEpic,
  incrementEpic,
  decrementEpic
);

// bundling Reducers
export const rootReducer = combineReducers({
  counter
});

И это store.js, где я определяю свой магазин перед его использованием.

import { createStore, applyMiddleware } from 'redux';
import { createEpicMiddleware } from 'redux-observable';
import { rootEpic, rootReducer } from './root';
import { composeWithDevTools } from 'redux-devtools-extension';

const epicMiddleware = createEpicMiddleware();

const middlewares = [
  epicMiddleware
]

const store = createStore(
  rootReducer,
  composeWithDevTools(applyMiddleware(middlewares))
);

epicMiddleware.run(rootEpic);

export default store;

Чтобы успешно реализовать redux-observable, мы должны выполнить этот порядок:

  1. Создание epicMiddleware с использованием createEpicMiddleware() метода
  2. Использование метода applyMiddleware() для регистрации программы epicMiddleware (redux-devtools-extension необязательно)
  3. Вызов epicMiddleware.run() с rootEpic, который мы создали ранее.

Это инструкция из Redux-Observable Document

enter image description here

Дополнительную информацию вы можете найти здесь:: Настройка промежуточного программного обеспечения :

0 голосов
/ 07 сентября 2018

Ну, вы пробовали:

import { epicMiddleware, combineEpics } from 'redux-observable'
const epicMiddleware = epicMiddleware.run(rootEpic)

...