Fetch обещания отклоняются только с TypeError, когда происходит ошибка сети. Поскольку ответы 4xx и 5xx не являются сетевыми ошибками, нечего ловить. Вам нужно будет выдать ошибку самостоятельно, чтобы использовать Promise#catch
.
, здесь вы можете проверить состояние объекта ответа:
handleSubmit(e) {
e.preventDefault();
/*global fetch */
this.setState({ loading: true});
fetch('https://bac1eal279.execute-api.eu-west-2.amazonaws.com/dev',{
method: "POST",
body: JSON.stringify(this.state),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
}).then((response) => {
if (response.status === 200) {
return response.json();
} else {
throw new Error('Something went wrong');
}
})
.then((responseJson) => {
// Do something with the response
})
.catch((error) => {
console.log(error)
});
}