Мои впечатления
нифига не успела, дедлайн жесть на такое дз, сори за код говна, я в депрессииСделано:
Базовые требования:
Создан github-репозиторий, в нём есть README, gitignore;
Проект запускается;
Вёрстка соответствует дизайн-макетам (допускаются минимальные отхождения, адаптив не требуется) (частично);
Функциональные требования:
Позиционируется липко (стики);
Для реализации модального окна используется портал;
После успешной авторизации кнопка «Войти» меняется на заглушку иконки пользователя и кнопку «Выйти»;
Сохраняем авторизационный токен из ответа ручки бэка /login (например, в localStorage); (Redux persist)
С токеном стоит работать через thunk;
По клику на кнопку «Выйти» удаляем токен и снимаем авторизацию;
При инициализации приложения проверяем авторизационный токен;
Реализована страница списка фильмов:
Поиск происходит во время ввода пользователем символов. Дёргаем ручку /search;
Реализованы фильтры с dropdown;
Фильтры сохраняются в query-params;
Реализован список фильмов с пагинацией;
Реализована работа с получением данных:
Дёргаем ручку /movie:id;
Соответствующие данные отрисованы;
Возможность поставить оценку:
Оценку для фильма достаём из ручки /movie/:id;
Если пользователь авторизован, даём возможность поставить оценку — запрос мутации;
После выставления оценки обновляем кеш запроса /movie/:id;
Реализовать единообразную обработку ошибок для запросов;
Реализован лоадер;
Используем debounce для поиска фильма и выставления оценки;
Используется rtk и rtk-query; Данные корректно разбиты на модули (пример — авторизация, searchParams из фильтров); Селекторы написаны оптимально (нет переизбытка дублирования);