# Неделя #3 Погружаемся в Redux


# Подготовка к выполнению задания

  1. Изучить все материалы третьей недели курса в Личном кабинете.

# Что нужно сделать?

# Выполнить домашнее задание #5 (Localstorage hoc)

  1. Переключитесь в ветку homework-5-localstorage-hoc
  2. Ознакомиться с примером работы.
  3. В данном домашнем задании вам необходимо создать hoc компонент, который будет насыщать обернутый компонент 2-мя пропсами. SavedData возвращает запись из localstorage. SaveData сохраняет данные.
  4. Компонент ToDo не должен хранить в своем стейте ничего, кроме значения инпута, сами данные по ToDo задачам должны всегда хранится в localstorage с помощью методов из hoc.

# Выполнить домашнее задание #6 (Mail client)

Задача — написать почтовый клиент используя react-router-dom. Все данные находятся в контексте.

В данном задании присутствуют 2 контекста, один для данных, а второй для работы с авторизацией.

  1. Переключитесь в ветку homework-6-mail-client
  2. Ознакомиться с примером работы. Почта: test@test.ru / Пароль: 321
  3. Изучите cypress/integration/homework.spec.js чтобы понять какой функционал должен быть реализован.
  4. Начните работу с RootRouter.js. В нем необходимо определить базовые роуты.
  5. Реализуйте приватный роут. Он должен находиться в файле PrivateRoute.js.
  6. Реализуйте лейаут и навигацию в приложении в файле AppRouter.js.
  7. Реализуйте компоненты Home (в нём должно показываться приветствие), InboxList (показывает список входящих писем), InboxMail (показывает выбранное входящее письмо), OutboxList (показывает список исходящих), OutboxMail (показывает выбранное исходящее письмо).
  8. Работа со стилями.
  9. Кроме того, для работы со стилями в данной работе используется новый подход — css-modules. Теперь он встроен в create-react-app.
  10. Как происходит работа? Обратите внимание на название css файлов. Если в названии присутствует слово .module, это значит webpack будет обрабатывать такие файлы по особенному.
  11. При импорте css-modules модулей в js, файл становится объектом, ключами которого являются названия классов из css файла, а значениями автоматически сгенерированные с помощью webpacck имена. Webpack следит за коллизиями имен, теперь в каждом модуле можно определить класс container или button, а webpack проследит за тем, чтобы эти имена в реальном дом дереве не пересекались.
  12. Для работы с несколькими классами используется библиотека classnames. В самом простом исполнении она объединяет все строки-классы, переданные аргументами и возвращает конкатенированную строку классов для тегов. Более подробно мы ее изучим на соответствующем занятии про стили в react.

# Как всё успеть?

Данный план является примерным ориентиром. Вы всегда можете работать в удобном для себя темпе.

# 🗓 Понедельник

Изучаем материалы модуля "I Redux".

Клонируем домашнее задание 5 и выполняем его.

Готовим вопросы к данному модулю.

# 🗓 Вторник

Изучаем материалы модуля "II Redux".

Продолжаем работу над домашним заданием 5.

# 🗓 Среда

Работа над домашним заданием №5.

Готовим вопросы к данному модулю.

# 🗓 Четверг

Сдаём домашнее задание 5 на проверку.

Изучаем материалы модуля "I Redux-saga".

Клонируем домашнее задание 6, осваиваемся с исходниками.

Готовим вопросы к данному модулю.

# 🗓 Пятница

Работа над домашним заданием №6.

Сдаём домашнее задание 5 на проверку.

Сдаём домашнее задание 6 на проверку.

Участвовать в практическом вебинаре.