Чеклист для самопроверки. 12 Спринт.

Работа принимается

  • HTML, CSS, JS-файлы и изображения должны быть в папке src.
  • Инфраструктурные файлы проекта созданы через CRA.
  • Сборка, запуск и функциональность проекта выполняются без ошибок.
  • Свёрстаны все необходимые элементы макета.
  • В проекте есть:
    • файлы index.html, index.css и index.js;
    • директория blocks;
    • папка images с картинками;
    • директория components с файлами App.js, Card.js, ImagePopup.js, PopupWithForm.js, Main.js, Header.js, Footer.js, AddPlacePopup.js, EditAvatarPopup.js, EditProfilePopup.js, Register.js, Login.js, ProtectedRoute.js, InfoTooltip.js;
    • директория utils с файлом api.js;
    • директория contexts с файлом CurrentUserContext.js;
    • файл README.md;
    • файл .gitignore.
  • Стили портированы.
  • Кодстайл:
    • имена переменных и функций должны быть написаны в camelCase;
    • имена классов и функциональных компонентов — существительные с прописной буквы;
    • имена переменных — существительные;
    • имя функции отражает то, что она делает.
    • Для именования запрещены:

    • транслит,
    • неуместные сокращения.
  • React

  • Объект контекста CurrentUserContext экспортируется из отдельного файла директории contexts.
  • Разметка портирована в JSX:
    • Разметка заключена в ( );
    • Разметка вынесена в соответствующие ей компоненты.
  • Локальное хранилище. Работа с jwt токеном выполнена в правильном порядке:
    • при монтировании App описан эффект, проверяющий наличие токена и его валидности;
    • при вызове обработчика onSignOut происходит удаление jwt;
    • при вызове обработчика onLogin происходит сохранение jwt.
  • Регистрация и авторизация:
    • Роут / защищён HOC-компонентом ProtectedRoute.
    • При попытке перейти по роуту / происходит редирект на /signin.
    • После успешной авторизации происходит редирект на /.
    • Роут /signup и /signin не является защищёнными, т.е оборачивать их в HOC ProtectedRoute не нужно.
    • После успешного вызова обработчика onSignOut происходит редирект на /signin.
    • Корректно используется хук useHistory.
    • Корректно используются компоненты <Switch />, <Route />, <Redirect />.
  • Компоненты:
    • Хуки не используются внутри условных блоков.
    • Хуки вызываются в основной функции компонента.
    • При использовании классовых компонентов эффекты описаны внутри методов жизненного цикла компонента.
    • Компоненты Main и Card подписаны на контекст CurrentUserContext.
    • Выполнено поднятие стейта из компонента Main в App.
    • В компонент App внедрён контекст через CurrentUserContext.Provider.
    • В корневом компоненте App создана стейт-переменная currentUser. Она используется в качестве значения для провайдера контекста.
    • Компоненты модальных окон содержат только обработчики сабмита формы. Остальные обработчики, например handleUpdateUser, описаны в компоненте App.
    • Запросы к API описаны внутри компонента App.
    • Обработчики onRegister(), onLogin(), и onSignOut() объявлены в Register.js, Login.js и Header.js соответственно, или объявлены в компоненте App и переданы в соответствующие компоненты.
    • В компоненты добавлены новые стейт-переменные: email — в компонент App, email и password — в компоненты Login и Register.
  • Запрос к API за информацией о пользователе и массиве карточек выполняется единожды, при монтировании.
  • Все стейт-переменные из брифа созданы и определены внутри указанного в брифе компонента.
  • Начальное состояние стейт-переменных содержит корректный тип данных.
  • Функциональность проекта сохранена:
    • На странице отрисовывается информация о пользователе и карточке.
    • Модальные окна открываются при нажатии на соответствующий элемент интерфейса.
    • Модальные окна закрываются при нажатии на иконку закрытия.
    • Работа модальных окон настроена: есть возможность редактировать аватар и профиль, добавлять новую карточку.
    • В форму редактирования профиля подставляются текущие данные.
    • Реализовано добавление/удаление лайка.
    • Реализовано удаление собственной карточки.
    • Все локальные значения корректно обновляются.

Работа отклоняется от проверки

  • При сборке или запуске проекта возникают ошибки.
  • Разметка не портирована в JSX.
  • Часть функциональности не реализована: например, пользователя невозможно зарегистрировать, или не выполнено сохранение токена в локальное хранилище.
  • Работа содержит вопросы или просьбы о помощи к ревьюеру.
  • На повторных итерациях не исправлены критические замечания.