#javascript #reactjs #redux #react-redux #redux-thunk
#javascript #reactjs #сокращение #реагировать-redux #исправление-thunk
Вопрос:
Ниже приведен мой код для объединения хранилища и редуктора в react-redux.
Это отлично работает в моих предыдущих приложениях, возможно, из-за версии react и react-redux.
- Но теперь я настроил новый проект react с последней версией, но получаю ошибку.
Ошибка типа: промежуточное программное обеспечение не является функцией
Код :
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 { createLogger } from 'redux-logger'
import user, { userEpic } from './user/duck'
import userApp, { userAppEpic } from './user-app/duck'
import app from './app'
// Bundling Epics
const rootEpic = combineEpics(
userEpic,
userAppEpic
)
// Creating Bundled Epic
const epicMiddleware = createEpicMiddleware()
// Define Middleware
const middleware = [
thunk,
promise(),
epicMiddleware
]
// Define Reducers
const reducers = combineReducers({
app,
user,
userApp,
form: formReducer
})
// Create Store
export default createStore(reducers,
applyMiddleware(...middleware))
epicMiddleware.run(rootEpic)
Может кто-нибудь, пожалуйста, помочь мне решить проблему?
Комментарии:
1. удалите
()
здесьpromise()
, напишите это так:const middleware = [ thunk, promise, epicMiddleware ]
2. @MayankShukla Ты справился с этим. Пожалуйста, опубликуйте это в качестве ответа. Я приму это.
Ответ №1:
Согласно Документу:
…промежуточное программное обеспечение (аргументы): Функции, соответствующие API Redux middleware. Каждое промежуточное программное обеспечение получает функции отправки хранилища и getState в качестве именованных аргументов и возвращает функцию.
Это означает, что нам нужно передавать функции в applyMiddleware
. В вашем случае вы передаете promise()
вместо promise
(function), поэтому он выдает ошибку:
промежуточное программное обеспечение — это не функция
Напишите это вот так:
const middleware = [ thunk, promise, epicMiddleware ];