Ошибка React Redux: Ошибка redux.js:275 Неперехваченная ошибка: Действия должны быть обычными объектами. Вместо этого фактический тип был: «Обещание».

#reactjs #react-redux #material-ui #dispatch

Вопрос:

Я использую redux вместе с таблицей материалов для добавления данных в свою базу данных, однако мои ошибки функции добавления с «redux.js:275 Неперехваченная ошибка: Действия должны быть обычными объектами. Вместо этого фактический тип был: «Обещание»». Я использую thunkmiddleware. Кто-нибудь знает, как это исправить?

 export const createActivity = (rowData) => async dispatch =>{
    const newActivity = {...rowData};
    const phaseRef = db.doc(`phase/${phaseId}`);
    newActivity.phase = phaseRef;

    const activityId = await api.createActivity(newActivity);

    dispatch({type:'ACTIVITY_CREATE_SUCCESS'})

    return activityId;
} 

Комментарии:

1. Вы должны вернуть отправку, но вы возвращаете активность.

Ответ №1:

Асинхронность и ожидание должны находиться внутри метода CreateActivity. Проще говоря, если вы используете axios, метод должен выглядеть так:

 const createActivity = async (url, data) => {
  return await axios.post(url, data).then(res => res.data);
};
 

Также в этом коде вы можете разделить URL — адрес от отправляемых данных.

Комментарии:

1. что, если я не использую axios?

2. Это будет то же самое, что поставить ожидание перед методом, который делает запрос.