HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Завершил курс "JS: Redux (React)"<a>https://ru.hexlet.io/courses/js-redux</a>решил написать небольшой отзыв. Если кратко освоение Redux - это подвиг.</p>
1 <p>Завершил курс "JS: Redux (React)"<a>https://ru.hexlet.io/courses/js-redux</a>решил написать небольшой отзыв. Если кратко освоение Redux - это подвиг.</p>
2 <p>Redux<a>https://redux.js.org/introduction/getting-started</a>- это хранилище данных для ReactJS. Меняем данные в хранилище автоматически изменяется внешний вид приложения. Магия! :-) Упрощенно можно считать, что это маленькая хитрая база данных в памяти, в которой хранятся все данные необходимые приложению.</p>
2 <p>Redux<a>https://redux.js.org/introduction/getting-started</a>- это хранилище данных для ReactJS. Меняем данные в хранилище автоматически изменяется внешний вид приложения. Магия! :-) Упрощенно можно считать, что это маленькая хитрая база данных в памяти, в которой хранятся все данные необходимые приложению.</p>
3 <p>Redux - это не просто хранилище, это архитектура. Состоящая из 4 частей.</p>
3 <p>Redux - это не просто хранилище, это архитектура. Состоящая из 4 частей.</p>
4 <ol><li>Компоненты пользовательского интерфейса (UI Components). Они ответственны за вывод информации на экран на основе данных, переданных им из хранилища. Они обращаются к создателям действий.</li>
4 <ol><li>Компоненты пользовательского интерфейса (UI Components). Они ответственны за вывод информации на экран на основе данных, переданных им из хранилища. Они обращаются к создателям действий.</li>
5 <li>Создатели действий (Action Creators) ответственны за создание и диспетчеризацию действий.</li>
5 <li>Создатели действий (Action Creators) ответственны за создание и диспетчеризацию действий.</li>
6 <li>Редьюсеры (Reducers) получают диспетчеризованные действия и обновляют состояние хранилища.</li>
6 <li>Редьюсеры (Reducers) получают диспетчеризованные действия и обновляют состояние хранилища.</li>
7 <li>Хранилище (Data Store) ответственно за хранение данных приложения.</li>
7 <li>Хранилище (Data Store) ответственно за хранение данных приложения.</li>
8 </ol><p>Не поняли? Это нормально. Дальше будет интересней.</p>
8 </ol><p>Не поняли? Это нормально. Дальше будет интересней.</p>
9 <p>Весь курс делали приложение Todo List. Список задач, галочки, кнопочки добавить\удалить. Задача типовая. Теперь я счастливый обладатель 9 версий туду-листов.</p>
9 <p>Весь курс делали приложение Todo List. Список задач, галочки, кнопочки добавить\удалить. Задача типовая. Теперь я счастливый обладатель 9 версий туду-листов.</p>
10 - <p>Первая мысль моя была поместить в хранилище массив с задачами, и задачи будут доступны во всём приложений. Логично? Но автор курса показал, что я не прав. Более грамотно - это создать массив объектов, далее второй массив со ссылками на индентификаторы объектов первого массива и третий массив, который отвечает за отображение элементов первого массива на экране. Сначала я подумал, что курил автор, но это называется нормализация данных и позволяет избежать дублирования информации, а также отделить данные от их представления. А при выводе на экране, это всё комбинируется в один объект. Это напоминает как из 2-х газов: кислорода и водорода появляется вода.</p>
10 + <p>Первая мысль моя была поместить в хранилище массив с задачами, и задачи будут доступны во всём приложений. Логично? Но автор курса показал, что я не прав. Более грамотно - это создать массив объектов, далее второй массив со ссылками на индентификаторы объектов первого массива и третий массив, который отвечает з отображение элементов первого массива на экране. Сначала я подумал, что курил автор, но это называется нормализация данных и позволяет избежать дублирования информации, а также отделить данные от их представления. А при выводе на экране, это всё комбинируется в один объект. Это напоминает как из 2-х газов: кислорода и водорода появляется вода.</p>
11 <p>На самом деле автор курса решил пожалеть слушателей. Если бы он рассказал подробно про нормальные формы, алгоритмы формирования индексов в базах данных и кардиальном числе. Курс бы завершили далеко не все.</p>
11 <p>На самом деле автор курса решил пожалеть слушателей. Если бы он рассказал подробно про нормальные формы, алгоритмы формирования индексов в базах данных и кардиальном числе. Курс бы завершили далеко не все.</p>
12 <p>Но это только начало, как правильно хранить данные в Redux курс не ограничивается. Redux - это не одна библиотека - это экосистема.</p>
12 <p>Но это только начало, как правильно хранить данные в Redux курс не ограничивается. Redux - это не одна библиотека - это экосистема.</p>
13 <p>Представьте Excel, дана таблица: имя товара, количество, цена. Нужно посчитать общую сумму. И мы можем добавлять\удалить строки итоговая сумма тоже автоматом будет пересчитываться. В Redux это тоже можно и это называется селекторы, библиотека Reselect<a>https://github.com/reduxjs/reselect</a>. Вот и создаём функции, которых вызывают другие функции, результаты которых используют третьи функции. Я уже подумал о самопроизвольном размножении функций путём почкования. Но функциональный подход, он такой функциональный… Вообщем, Excel в отдельно взятом приложении эмулировать можно :-)</p>
13 <p>Представьте Excel, дана таблица: имя товара, количество, цена. Нужно посчитать общую сумму. И мы можем добавлять\удалить строки итоговая сумма тоже автоматом будет пересчитываться. В Redux это тоже можно и это называется селекторы, библиотека Reselect<a>https://github.com/reduxjs/reselect</a>. Вот и создаём функции, которых вызывают другие функции, результаты которых используют третьи функции. Я уже подумал о самопроизвольном размножении функций путём почкования. Но функциональный подход, он такой функциональный… Вообщем, Excel в отдельно взятом приложении эмулировать можно :-)</p>
14 <p>Думаете нажали на кнопку и вот он результат, а не всегда. Приложению надо "сходить" на сервер, пообщаться, получить задачи и только тогда что-то отобразить (или не отобразить). Это называвается асинхронные действия, и реализуется при помощи библиотеки redux-thunk<a>https://github.com/reduxjs/redux-thunk</a>. Вот ловим состояния и пока приложение общается с сервером показывает колёсико, что что-то работает.</p>
14 <p>Думаете нажали на кнопку и вот он результат, а не всегда. Приложению надо "сходить" на сервер, пообщаться, получить задачи и только тогда что-то отобразить (или не отобразить). Это называвается асинхронные действия, и реализуется при помощи библиотеки redux-thunk<a>https://github.com/reduxjs/redux-thunk</a>. Вот ловим состояния и пока приложение общается с сервером показывает колёсико, что что-то работает.</p>
15 <p>Думаете где лучше хранить данные формы? Правильно, всё в хранилище. Библиотека Redux Forms<a>https://redux-form.com/8.2.2/docs/gettingstarted.md/</a>.</p>
15 <p>Думаете где лучше хранить данные формы? Правильно, всё в хранилище. Библиотека Redux Forms<a>https://redux-form.com/8.2.2/docs/gettingstarted.md/</a>.</p>
16 <p>Работа с формами на чистом реакте какой-то кошмар с уймой однотипных действия, добавление лишней галочки образует много однообразной работы. По ощущением напоминает работу вычерпать мировой океан чайной ложкой. Redux Forms решает эту проблему, но и поднимает новые. Перед отправкой данные формы надо проверить, вывести ошибки, не так всё просто как кажется на первый взгляд. Документация достаточно объёмная.</p>
16 <p>Работа с формами на чистом реакте какой-то кошмар с уймой однотипных действия, добавление лишней галочки образует много однообразной работы. По ощущением напоминает работу вычерпать мировой океан чайной ложкой. Redux Forms решает эту проблему, но и поднимает новые. Перед отправкой данные формы надо проверить, вывести ошибки, не так всё просто как кажется на первый взгляд. Документация достаточно объёмная.</p>
17 <p>Самое интересно, я не первый кто столкнулся с этими проблемами и есть решение Redux Toolkit<a>https://redux-toolkit.js.org/</a>Люди собрали Redux и популярные библиотеке в одном пакете, но чтобы его использовать надо знать, как это работает "под капотом".</p>
17 <p>Самое интересно, я не первый кто столкнулся с этими проблемами и есть решение Redux Toolkit<a>https://redux-toolkit.js.org/</a>Люди собрали Redux и популярные библиотеке в одном пакете, но чтобы его использовать надо знать, как это работает "под капотом".</p>
18 <p>В результате курс получился достаточно насыщенный разными подходами и концепциями. Последний раз такой информационный перегруз у меня был был когда я изучал HTML + CSS. Сразу освоить уйму тегов, селекторов их взаимодействия достаточно трудоёмко. Но большого слона, надо есть по кусочкам.</p>
18 <p>В результате курс получился достаточно насыщенный разными подходами и концепциями. Последний раз такой информационный перегруз у меня был был когда я изучал HTML + CSS. Сразу освоить уйму тегов, селекторов их взаимодействия достаточно трудоёмко. Но большого слона, надо есть по кусочкам.</p>
19 <p>Если начинаете новый проект забудьте про Redux с его функциональной архитектурой, используйте MobX<a>https://mobx.js.org/README.html</a>получите всё тоже самое, но осваивается за пару вечеров. Но обычно жизнь штука сложная и есть большая вероятность, что на новой работе будет кровавый энтерпрайз, который пишет уже 5 лет, с исходным кодами на мегабайты и Redux в качестве хранилища. Хочется, модное, клёвое, молодежное, но мир - это не фабрика по исполнению желаний и жизнь вынуждает ко многим добровольным действиям, как Redux.</p>
19 <p>Если начинаете новый проект забудьте про Redux с его функциональной архитектурой, используйте MobX<a>https://mobx.js.org/README.html</a>получите всё тоже самое, но осваивается за пару вечеров. Но обычно жизнь штука сложная и есть большая вероятность, что на новой работе будет кровавый энтерпрайз, который пишет уже 5 лет, с исходным кодами на мегабайты и Redux в качестве хранилища. Хочется, модное, клёвое, молодежное, но мир - это не фабрика по исполнению желаний и жизнь вынуждает ко многим добровольным действиям, как Redux.</p>
20 <p>На самом деле это только первый шаг. Экосистема ReactJS достаточно обширная, за пределами 2-х курсов: ReactJs + Redux остался контекст, хуки, React Router, Typescript, а ведь ещё приложение надо упаковать в Docker и разместить на сервере. Но я жду автора, тему про хуки он обещал написать.</p>
20 <p>На самом деле это только первый шаг. Экосистема ReactJS достаточно обширная, за пределами 2-х курсов: ReactJs + Redux остался контекст, хуки, React Router, Typescript, а ведь ещё приложение надо упаковать в Docker и разместить на сервере. Но я жду автора, тему про хуки он обещал написать.</p>
21 <p>Но я продолжаю изучать Javascript, на Hexlet я запланировал изучить 10 основных курсов в рамках профессии и 9 дополнительных. Ежедневно, шаг за шагом. Вдохновение для дилетантов, остальные просто работают.</p>
21 <p>Но я продолжаю изучать Javascript, на Hexlet я запланировал изучить 10 основных курсов в рамках профессии и 9 дополнительных. Ежедневно, шаг за шагом. Вдохновение для дилетантов, остальные просто работают.</p>
22 <p><a>Оригинальная публикация</a>.</p>
22 <p><a>Оригинальная публикация</a>.</p>