Цель: выяснить уровень знаний React/Redux/React-Router. Уровень работы с асинхронными запросами. Понимание взаимодействия клиента и сервера.
Это задание является одним из частых тестовых заданий. Обычно его дают для уровня junior, чтобы отсеять поток резюме. Те «джуны», кто присылают задание — автоматически проходят первую оборонительную линию в лице кадрового специалиста.
Для старта можете использовать репозиторий из тестового задания #1 (сайт, vk) или лучше решите первое задание сами.
Всем кто «боится» практики, или думает что у него не получится — читайте предпоследний абзац. Смотрите разбор первого ТЗ, делайте выводы.
Внешний вид приложения и прочие моменты:
/login
)/news
)/profile
)/profile
недоступна для тех, кто не залогинился.Приложение использует простой «бэк» расположенный на heroku. Свой бэкэнд делать не нужно.
Для проверки доступности бэкэнда, можете перейти по адресу:
https://mysterious-reef-29460.herokuapp.com/api/v1/
Форма для входа включает в себя 2 поля: email + пароль.
По нажатию на «логин» (или после нажатия клавиши Enter) уходит POST запрос с введенными данными на бэкэнд.
Адрес и метод для запроса:
Если введены корректные данные: (email = ‘max@test.com’, password = ‘12345’, content-type: application/json), ответ будет:
В случае успеха — пользователя нужно редиректить на страницу профиля, на которой будет нужно получить подробную информацию о пользователе. Об этом ниже в разделе Профиль. Для выполнения этой задачи, рекомендую полученный id сохранять в стор (в какой-то из редьюсеров).
Обратите внимание на название полей (username, password), на их значения (строковые) и на то, что это POST запрос.
Если введены некорректные данные, то нужно уметь обрабатывать ответ с ошибкой:
После получения такого ответа, необходимо очистить из формы поле пароля (email не трогать) и показать красивое сообщение об ошибке: Имя пользователя или пароль введены не верно.
Дополнительно:
Запрос должен быть выполнен через традиционный redux-подход: то есть мы «диспатчим (вызываем) экшены и сохраняем необходимое в редьюсере».
На странице профиля необходимо сделать GET запрос, и получить подробную информацию о пользователе:
В реальном приложении, после user-info мог бы быть любой id, в нашем случае — это id 1, значит запрос должен выглядеть так:
Ответ:
Полученные данные, положить в стор, и отрисовать на странице следующим образом:
Иконки возьмите из google картинок, положите к себе в public директорию. Для «сайта» подойдет иконка глобуса или сито «Без воды» 🙂
Ахтунг!
В требовании к задаче, «дизайнер» захотел, чтобы сайт (web) был первым в списке, а бэкэнд-разработчик ответил, что ему «пофиг и некогда». Поэтому, сайт нужно отрисовать первым своими силами (то есть, как-то обработать входящие данные с MockAPI). Все остальное в любом порядке.
Дополнительно:
На странице, нужно вывести новости в формате «заголовок» + «текст».
Внизу страницы — «всего новостей ХХ» (зависит от количества новостей, в нашем случае это всегда «2», но вы должны сделать это число не «захардкоженным»)
Если говорить, словами «разработчиков», то API endpoint:
Если словами «новичков» — нужно сделать GET запрос, по адресу выше.
Ответ:
Новости должны храниться в соответствующем редьюсере.
Кнопка просто меняет свое состояние. Если пользователи уже залогинился — «Выйти», если нет — «Войти»
20.05.2018 (включительно)
Сегодня будем использовать parcel и IntelliJ IDEA Community Edition. Все инструменты бесплатные. Инициализация elm проекта…
На данном вебинаре мы знакомились с языком Elm проводя параллели между Elm и Redux, поэтому…
Richard Feldman рассказывает как масштабировать Elm приложение без боли. Показаны техники: extended records, подход narrow…
В данной заметке вы найдете конспект видео по Elm, которые я посмотрел в ноябре 2019.…
Итоги года 2019 // Max Frontend Покажи мне свой гитхаб, и я скажу работал ли…
Почему стоит изучать Elm? Потому что это интересный вызов, редкие (но вкусные) вакансии и хороший…