-
Сделать форк этого репозитория в свой аккаунт (только 1 раз в самом начале).
-
Перед выполнением ДЗ сделайте мердж мастера этого репозитория себе в форк (чтобы иметь актуальный код);
-
Обновить зависимости
yarn
илиnpm i
; -
Создайте новую ветку от актуального мастера для выполнения ДЗ;
-
Выполните ДЗ в этой ветке;
-
Сделайте Pull Request этой ветки в мастер моего репозитория;
-
Напишите мне ([email protected]) письмо со ссылкой на PR.
Дедлайн – 22:00 по Москве / 21:00 по Киеву за день до занятия.
- Создать компоненту Rate, которая принимает рейтинг (число от 1 до 5) и его отображает (можно просто показать число, нарисовать звездочки и раскрасить их, и т.д.).
- Создать компоненту Reviews, где выводить имена и отзывы про рестораны и рейтинг с помощью компоненты Rate.
- Создать компоненту Restaurant (рендерить там, где сейчас Menu). В Restaurant показывать Menu и Reviews, а так же средний рейтинг с помощью компоненты Rate.
- Покрыть PropTypes все компоненты (только то, что используется в компоненте).
- Написать тесты на уменьшение блюд. (опционально - без клика по increment).
- Покрыть тестами Reviews.
- Сделать компонент Order в котором отображать выбранные товары с их количеством, суммой по каждому товару и общей стоимостью заказа.
- Сделать у каждой позиции в этом заказе кнопки +, -, х (при нажатии на х удаляеься все количество товара)
- Переписать редьюсеры review и restaurant на key=>value (аналогично products)
- Добавить users редьюсер
- Починить отображение Review компонента (взять данные из редьюсеров review и users)
- Написать middleware для генерации uuid
- Реализовать добавление нового review в стор и показывать его
- Загрузить products через api middleware, грузить только для текущего ресторана
- Загрузить users через redux-thunk
- Дописать обратотку екшенынов LOAD_REVIEWS в reviews редьюсере
- Полностью убрать fixtures из приложения (удалить все импорты и сам файл), все грузить с сервера
- При загрузках показывать лоадеры, все грузить максимально низко, там где эти данные нужны
- Все данные грузить только один раз (не загружать повторно данные, которые уже есть)
- (Опционально) переписать все на immer
- Сделать reviews/menu отдельными роутами (/restaurants/:id/reviews)
- В корзине сделать продукты линками на их ресторан
- Сделать редирект со / и с /restaurants на страницу ресторана
- Проверить если мы на /checkout, то при нажатии на кнопку:
- отправить POST запрос на: '/api/order' с JSON формата [{id: "d75f762a-eadd-49be-8918-ed0daa8dd024", amount: 2}]
- блокировать кнопку на время запроса (можно добавить лоадер)
- при успешном ответе (при сумме заказа от 50 до 200) редиректить на новую страницу "Спасибо за заказ!" и очищать корзину
- при ошибке редиректить на странцу ошибки, показать текст ошибки
- Реализовать переключение валюты, хранить словарь словарь в контексте (минимум 3 валюты)
- Анимировать добавление ревью использус css modules