Я хочу создать центральный обработчик ajax для всех моих запросов внутри моего приложения React. Это не имеет ничего общего с Redux или чем-то подобным. Это просто «центральный узел» для выполнения ajax-запросов от компонентов React.
Дело в том, что я хочу иметь возможность перехватывать определенные ошибки, чтобы не повторять их при каждом вызове ajax. В конце концов, я хочу снова вызвать then () из компонента, который фактически инициировал запрос
Вот что я сделал:
import axios from 'axios';
import handleError from './error';
export default (endPoint, method = 'get', data) => {
return axios({
url: window.BASE_API + endPoint,
method,
data
}).then(({ data }) => {
if (data.status !== 'ok') {
handleError(data.errorMessage);
}
}).catch((error) => {
handleError(error);
})
}
В компоненте реакции:
import ajax from '../../services/ajax';
componentDidMount() {
ajax('/content')
.then(({ data }) => {
this.setState(() => ({ pages: data.content }))
})
}
Это приводит к ошибке:
Uncaught (в обещании) TypeError: Невозможно прочитать свойство 'data' из неопределенного
Как я могу выполнить обещание дважды?
РЕДАКТИРОВАТЬ: так выглядит мой объект ответа:
{content: Array(18), status: "ok", errorMessage: null, metaData: null}