jedifa, предоставляет контроль над исходным состоянием страницы.
К примеру используется JSON.stringify.
Если в объекте, который приходит с бэка есть поля, которые может редактировать какой то ушлый пользователь, то вполне, получится поменять там id, или name.
Эта либа экранирует данные, которые приходят в стрингифованном объекте
Ну и само собой можешь со мной позаниматься как минимум за час расскажу о принципах проектирования и введу в курс дела, как максимум при постоянных занятиях сделаем пару проектов по всем нормам хорошего тона)
Что тут сказать, могу предложить курсы, где рассказывают про архитектуру (в тех же learnJavascript в продвинутом реакте было это, или в hexlet).
Можно почитать хорошие книжки, Мартина советую чистый код и чистую архитектуру. Про общие подходы и про дизайн чего то более сложного у Клепмана в высоконагруженных приложениях можно много чего интересного найти)
Можно найти ментора с которым поделать вместе свои пет проекты)
Alex562035, Прошу прощения, но разбирать код +100 строчек, это вам на фрилансим.
тут могу лишь дать совет, это делать проверку на то, что list_copy.books_copy[2016] существует, типа list_copy.books_copy && list_copy.books_copy[2016]
успевает выполниться процесс сортировки
Если процесс сортировки синхронный, то оснований на то, что он не успевает выполнится у вас нет.
Потому, что линтер думает, что ваш dispatch может изменится, если вдруг функциональный компонент меняется и вам не надо по нему делать эффект, то можно просто отключить это правило через
/* eslint-disable react-hooks/exhaustive-deps */
Но в вашем случае dispatch меняться не будет, поэтому просто добавьте в deps.
AgentSmith, Я вам сочувствую, что у вас получаются монстры.
Но при хорошей модульной структуре, не очень важно какими компонентами вы пользуетесь.
Если у вас классовый компонент на 1000 строк и функциональный на столько же строк, то проблема не в них, а у вас.
Все таки, если не получается, то используйте классы. Не вижу проблем.
К примеру используется JSON.stringify.
Если в объекте, который приходит с бэка есть поля, которые может редактировать какой то ушлый пользователь, то вполне, получится поменять там id, или name.
Эта либа экранирует данные, которые приходят в стрингифованном объекте