Задать вопрос
@Nikonorovich

Написал тестовое на react, кто из сильных поможет с оценой?

Народ кто помочь может, написал маленькое простое тестовое задание на react-redux . Но работодатель отморозился, даже колбек, по нему, на предмет ошибок не прислал. Подскажите код совсем хреново написан ?Претендую на вакансию джуна+
Сам проект Репозиторий проекта
собраный билд
Приложение умеет создавать записи, помечать их как важные, показывать только важные, делать поиск по записям
  • Вопрос задан
  • 325 просмотров
Подписаться 1 Средний 8 комментариев
Решения вопроса 1
Seasle
@Seasle Куратор тега React
1. React.StrictMode отсутствует.
2. Не понятно, для чего Вы в App подписываетесь на изменения store и обновляете состояние им.
3. Все файлы компонентов названы с маленькой буквы, а лучше бы с заглавной.
4. Все стили описаны в файле src/style.css, а надо бы для каждого компонента их разделять. Я бы разбивал на модули.
5. Расширение .jsx используйте только для компонентов. У Вас есть файлы с логикой, которые имеют такое расширение.
6. Чтобы не передавать Redux-хранилище по цепочке в другие компоненты используется функция connect.
7. Значение о том, какой тип сущностей и фильтр по ним (important или не important; filter), лучше вынести в Redux, или композицией в родительский компонент.
8. В sirch-panel.jsx (а еще лучше бы SearchPanel.jsx) лучше хранить состоянием только значение поля для новой сущности.
9. События Redux - считаю, что лучше константы вынести в отдельный файл (action types), а сами события оформить без store.dispatch. Диспатчинг событий можно перенести в тот же connect (можно даже bindActionCreators использовать).
10. Reducer - даже если событие не данного reducer'а, то Вы возвращаете новое состояния. Лучше перенести код по модификации состояния в сам switch. Для удаления можете воспользоваться методом массива .filter. Для пометки important можете воспользоваться методом массива .map. И вообще его вынести в отдельную директорию, т. к. он не является компонентом (как и action creators).
11. Чтобы не писать такие конструкции:
className={important ? "important list-item" : "list-item"}
можете воспользоваться classnames или clsx.
12. Почитайте про useCallback. Некоторые обработчики различных события можно улучшить при помощи данного хука.
13. Вы используете разные способы экспорта компонентов: default export и named export. Наверное, чтобы в дальнейшем не путаться, следует использовать какой-то один вариант.
14. Нет сохранения данных между сессиями. Воспользуйтесь для начала localStorage.
15. Если будете использовать сохранение данных, то у Вас появится проблема с ID сущностей. id: idCounter можно будет заменить на Date.now().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы