React Bootcamp 2021
Ссылка на github pages:
Стэк:
Linter:
Code formatter:
Инструкции по запуску:
- Скачать или склонировать репозитори
- Установить зависимости при помощи yarn -
yarn install
- Запустить проект -
yarn start
- Запустить сборку build -
yarn build
- Разместить сборку build на github pages -
yarn deploy
Дополнительно:
Основные сложности:
-
Первый проект на Typescript, поэтому осталось много вопрос.
-
Store: В расчёте на быстрое решение было много боли при попытке подключить
store
используяUseReducer
иuseContext
в связке сTypescript
. Упёрся в ошибку, решение котороый не было найдено (Все форумы и просмотренные проекты на Github совпадали с реализованным мной решением, но в моём случае это не запускалось). По итогу был использованRedux
. Это облегчило работу во многом и запустилось почти мгновенно. В связкеRedux
,Redux-Thunk
иTypescript
было тяжеловато, учитывая мой первый опыт вTypescript
. -
Select города: Было много вариантов, но выбрал именно тот, который позволяет совместить семантику и стилизацию. Добавление и своевременное удаление слушателей на документе было самым болезненным.
-
Datepicker: Данная стилизация адекватно работает только в Chrome на Desktop'e. Чуть кривее выглядит на мобильной версии Chrome, и совсем плохоу в Firefox. Осталось непонятным, как стилизовать по макету datepicker не нарушая семантику для большего количества браузеров. Также обратил внимания, что на айфонах не ставится ограничение по дате, что позволяет пользователю выбрать любуй другую дату, отличающуюся от 5 прошедших дней, что вызовет ошибку при запросе.
-
Карусель карточек: Использовал слушатель события
resize
для отображения 3 или 7 карточке на мобильной версии и Desktop версии соответственно. На мой взгляд, достаточно ресурсоёмкое решение. Отказался от решения с anchor, т.к. страницу начинает прокручивать по вертикали вниз до карточки. -
WeatherAPI: Api, предоставляющее прогноз погоды на 7 дней на самом деле выдаёт 8 дней. Не стал убирать первый или последний. Api, предостовляющее прогнозы погода на прошедшие дни выдаёт температуру, которая не является средней или максимальной. Не сразу увидел это. Пришлось вычислять максимальную температуру за день и брать этот элемент из api. Если так и задумывалось, то для меня это ок.