#React რეგისტრაციის ფორმა 1. ახსენით, როგორ მუშაობს StateProvider, გაუზიარეთ თქვენი მოსაზრებები ინტერვიუერისთვის. 2. შეხედეთ /src/api/mock-ს, ახსენით, როგორ მუშაობს. 3. შემოწმეთ SubmitButton-ის ფერი და გამოასწორეთ. 4. განახორციელეთ მომხმარებლის ფორმის ვალიდაცია Signup კომპონენტში. (\*) გაითვალისწინეთ დავალება ნომერი 9. წესები: - მომხმარებლის სახელი, ელ.ფოსტა, პაროლი და განმეორებითი პაროლი ველებს უნდა ჰქონდეთ მინიმუმ 6 სიმბოლო; - პაროლი უნდა ემთხვეოდეს განმეორებით პაროლს; - ვალიდაცია უნდა განხორციელდეს "SignUp" ღილაკზე დაჭერის შემდეგ; - ველებს, რომლებიც არასწორ მნიშვნელობებს შეიცავს, უნდა მიენიჭოს ნიშნული (props error და helperText); 6. API-ის პასუხში შეიძლება იყოს შეცდომა, რომელიც უნდა გამოჩნდეს მომხმარებლისთვის შესაბამის ველთან ახლოს. 7. დარწმუნდით, რომ UserName კომპონენტი აჩვენებს ახალ მომხმარებლის სახელს წარმატებული გაგზავნის შემდეგ. 8. განახორციელეთ ახალი SignupSuccess კომპონენტი. ის უნდა გამოჩნდეს რეგისტრაციის ფორმის ნაცვლად. 9. განახორციელეთ სერვერული ვალიდაცია შესაბამის ველებზე. --- 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( `მომხმარებლის სახელი "${userName}" უკვე დაკავებულია. სცადეთ სხვა.` ) ); } }, 500); }); }, }; export default api; ```
sobes.tech AI
პასუხი 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.