Вы должны добавить try/catch
блок вокруг того места, где вы await
ваш запрос, и выполнить там обработку ошибок (то есть не использовать response.user[0].attributes[0]
при ответе на ошибку HTTP и избегать Невозможно прочитать свойство 'user' из undefined ошибка выполнения). Вы войдете в блок catch
, если вернете код ошибки ответа в своем бэкэнде.
try {
const a = await fetch(url, { method: "GET", headers: headers });
const response = await a.json();
const respData = response.user[0].attributes[0]
setData(respData);
history.push(`/user/${respData.name}`)
}
catch (err) {
setShowAlert(true);
// some more error handling if necessary
}
Я бы рекомендовал иметь логический флаг в состоянии или, если это более сложно решить, функцию для указания показывать или нет предупреждение. Это значительно упростит ваш лог c в обзоре. Что-то вроде:
const [showAlert, setShowAlert] = useState(false);
...
{showAlert &&
<Alert severity="error" className={styles.alert}>
Incorrect phone number . Try again!
</Alert>}