#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. Это будет то же самое, что поставить ожидание перед методом, который делает запрос.