Error: Actions must be plain objects. Use custom middleware for async actions.
На всем наборе действий, возвращаемых из эпосов, мы получаем эту ошибку.
это может быть связано с тем, как эпос настроен в epics
создателе:
const epic = (action$, store) =>
action$.ofType(String(key)).mergeMap(action => func(action, store))
либо здесь отображения неверны, либо, скорее всего, они неверны в эпосах.
Пример одного эпоса, названного func(action, store)
:
[String(usersActions.updateUser)]: (action, store) => {
return authFetch(`${API_ROOT}/user/${get(action, 'payload.id')}`, {
method: 'put',
headers: {
...
},
body: ...,
})
.then(resJson => {
if (resJson['status'] === 200) {
return [
appActions.pushNotification('success', USER_UPDATE_SUCCESS),
appActions.setNextPath(`/users/${get(action, 'payload.id')}`),
]
} else
return [
appActions.pushNotification(
'error',
USER_UPDATE_FAILED + ': ' + resJson['message']
),
]
})
.catch(() => {
return [appActions.pushNotification('error', USER_UPDATE_FAILED)]
})
},
Он работает правильно, если квадраткруглых скобок нет, пробовал с этим предложением тоже:
[String(usersActions.updateUser)]: (action, store) => {
return Rx.Observable.fromPromise(
fetch(`${API_ROOT}/user/${get(action, 'payload.id')}`, {
method: 'put',
headers: {},
}).then(res => res.json())
)
.mergeMap(resJson => {
if (resJson['status'] === 200) {
return Rx.Observable.concat(
Rx.Observable.of(
appActions.pushNotification('success', USER_UPDATE_SUCCESS)
),
Rx.Observable.of(
appActions.setNextPath(`/users/${get(action, 'payload.id')}`)
)
)
} else return
Rx.Observable.concat(
Rx.Observable.of(
appActions.pushNotification(
'error',
USER_UPDATE_FAILED + ': ' + resJson['message']
)
)
)
})
.catch(() => {
Rx.Observable.concat(
Rx.Observable.of(
appActions.pushNotification('error', USER_UPDATE_FAILED)
)
)
})
},
он устраняет ошибку, но отправленные действия теперь дублируются.
Уже пробовал все варианты там, так что надеюсь, что это не такповторный вопрос.