#React-aanmeldformulier 1. Leg uit hoe StateProvider werkt, deel je gedachten met de interviewer. 2. Bekijk /src/api/mock, leg uit hoe het werkt. 3. Controleer de kleur van de SubmitButton en corrigeer deze. 4. Implementeer client-side formuliervalidatie in de Signup-component. (\*) Houd rekening met taak nummer 9. Regels: - Gebruikersnaam, E-mail, Wachtwoord en Herhaal Wachtwoord velden moeten minimaal 6 tekens lang zijn; - Wachtwoord moet overeenkomen met Herhaal Wachtwoord; - Validatie moet worden uitgevoerd bij het klikken op de "SignUp" knop; - Velden met ongeldige waarden moeten worden gemarkeerd (props error en helperText); 6. API-respons kan een fout bevatten die aan de gebruiker naast het overeenkomstige veld moet worden weergegeven. 7. Zorg ervoor dat de UserName-component de nieuwe gebruikersnaam weergeeft na een succesvolle verzending. 8. Implementeer de nieuwe SignupSuccess-component. Het moet in plaats van het registratieformulier worden weergegeven. 9. Implementeer server-side validatie voor de juiste velden. --- Code uit mock.ts: ```typescript const fakeResponse = (userName) => ({ code: 200, user: { id: 42, userName, }, }); let a = 0; const api = { '/signup': function (userName: string, email: string, password: string) { a++; return new Promise((resolve, reject) => { setTimeout(() => { if (a % 2 === 0) { return resolve(fakeResponse(userName)); } else { return reject( new Error( `Gebruikersnaam "${userName}" is al in gebruik. Probeer een andere.` ) ); } }, 500); }); }, }; export default api; ```
sobes.tech AI
Antwoord van AI
-
StateProvider — это компонент, который предоставляет контекст состояния для дочерних компонентов. Он использует React Context API, чтобы хранить и передавать состояние и методы его изменения, позволяя избежать проп-дриллинга и централизовать управление состоянием.
-
В
/src/api/mockреализован мок API, который имитирует асинхронный запрос на сервер. Функция/signupпринимает данные пользователя и возвращает промис, который через 500 мс либо резолвится с успешным ответом, либо реджектится с ошибкой, имитируя ситуацию, когда имя пользователя уже занято (чередуется по вызовам). -
Чтобы исправить цвет кнопки SubmitButton, нужно проверить стили компонента и убедиться, что цвет соответствует дизайну. Например, если цвет задан через пропсы, исправить значение цвета на нужное.
-
Для валидации в компоненте Signup при клике на кнопку "SignUp" нужно проверить:
- Длина полей Username, Email, Password, Repeat Password >= 6
- Password и Repeat Password совпадают
Поля с ошибками пометить с помощью props error и helperText.
Пример валидации:
const validate = () => {
const errors = {};
if (username.length < 6) errors.username = 'Минимум 6 символов';
if (email.length < 6) errors.email = 'Минимум 6 символов';
if (password.length < 6) errors.password = 'Минимум 6 символов';
if (repeatPassword.length < 6) errors.repeatPassword = 'Минимум 6 символов';
if (password !== repeatPassword) errors.repeatPassword = 'Пароли не совпадают';
setErrors(errors);
return Object.keys(errors).length === 0;
};
const handleSubmit = () => {
if (!validate()) return;
// отправка данных
};
-
Если API возвращает ошибку, её нужно отобразить рядом с соответствующим полем, например, если имя пользователя занято — показать ошибку у поля Username.
-
После успешной регистрации компонент UserName должен обновиться и отобразить новое имя пользователя, полученное из ответа API.
-
Компонент SignupSuccess отображается вместо формы после успешной регистрации, показывая сообщение об успешном завершении.
-
Серверная валидация реализована в мок API: при каждом втором запросе возвращается ошибка, что имя пользователя занято. Клиент должен корректно обрабатывать эту ошибку и показывать пользователю.
Таким образом, задача включает работу с состоянием, валидацией, обработкой ошибок и отображением разных состояний UI.