У меня есть форма для входа. Когда нажимают кнопку «Отправить», я проверяю через бэкэнд GraphQL правильность адреса электронной почты и пароля. Если да, токен возвращается и сохраняется в локальном хранилище. Время от времени возникают ошибки , такие как:
«Неверный пароль» или «Пользователь не существует».
Есть ли способ сохранить эти ошибки как строки , чтобы я мог отобразить их позже с помощью условного рендеринга?
Вот так выглядит моя мутация:
function submitForm(LoginMutation: any) {
const { email, password } = state;
if(email && password){
LoginMutation({
variables: {
email: email,
password: password,
},
}).then(({ data }: any) => {
localStorage.setItem('token', data.loginEmail.accessToken);
})
.catch(console.log)
}
}
, и я использую это так в своем возвращении
return (
<Mutation mutation={LoginMutation}>
{(LoginMutation: any) => (
....)}>
</Mutation>
)
Пока я просто показываю единичная ошибка в зависимости от того, существует токен или нет, но я хочу, чтобы моя ошибка указывала c на ошибки GraphQL.
function ShowError(){
if (!localStorage.getItem('token'))
{
console.log('Login Not Successful');
return <Typography color='primary'>Login Not Successful</Typography>
}
}
Редактировать:
Пример ошибки:
[Log] Error: GraphQL error: Key (email)=(c@c.com) already exists.
Я пробовал это, но он ничего не регистрирует:
.then(({data, errors}:any) => {
if (errors && errors.length) {
console.log('Errors', errors);
setErrorMessage(errors[0].message);
console.log('Whats the error', errors[0].message)
} else {
console.log('ID: ', data.createUser.id);
}
})
```
The backend isn't made by me