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>