Я только что прочитал пост Ника Клепингера «Критическое мышление о Redux в вашем приложении». Не так давно я изучил React/Redux, поэтому у меня возникла пара мыслей, которые я решил записать.

Полное понимание концепции состояния и того, чем оно отличается от реквизита, занимает немного времени при первом знакомстве с React.

Я помню, что это было совершенно неправдой для меня. Концептуальная разница между props (передается сверху) и state (локальное состояние внутри компонента) очень, очень проста. Сложнее было определить умные и глупые компоненты — какие компоненты действительно нужны state, а какие подходят для простого вывода информации, переданной сверху.

Наиболее распространенный вариант использования Redux, с которым я сталкиваюсь, — это управление общим состоянием. Основная концепция, которую необходимо понять при использовании локального состояния, — это поднять это состояние до общего предка.

Опять же — вернемся к умным и тупым компонентам. Не всегда два компонента имеют общее состояние и работают независимо. Я обнаружил, что у меня часто есть подкомпонент (например, элемент пользовательского интерфейса, абстрагированный в многоразовый компонент, например текстовый ввод), который манипулирует частью своего родительского состояния, и родитель отвечает за захват всех этих правок (например, в form) и что-то делать (например, вызов ajax).

Существуют разные способы решения такого рода проблем — один способ поднять это состояние до необходимого уровня (и иметь дело с передачей обработчиков вниз через n уровней компонентов), а другой — Redux (поэтому любой подкомпонент подключается к Redux, и родитель будет получать обновления, не передавая привязку по цепочке компонентов).

Я обнаружил, что Redux стоил дополнительных авансовых инвестиций для прототипирования и экспериментов, прежде чем я разобрался со структурой своих компонентов. Это позволяет вам обрабатывать действия в компоненте, в котором они происходят, и избавляет от необходимости беспокоиться о наследовании по цепочке. Это упрощает иерархию для вас.

В документах React есть много страшных вещей, которые можно сказать об использовании контекста, но это вполне жизнеспособное решение, если вы обратите внимание и будете использовать его правильно и осторожно.

Когда я был на том уровне, когда решал, будет ли Redux стоить моего времени, документация, говорящая много пугающих вещей о контексте, означала, что я никогда не рассматривал возможность его использования. Полная остановка. На уровне новичка фреймворки полны неизвестных неизвестностей.Игнорирование предупреждений создателей в документации — это не то, чем должны заниматься новички. Новичкам просто не хватает контекста, чтобы принимать подобные решения.

Вывод

Если вы новичок и хотите создать на React что-то, что не очень-то просто с точки зрения управления данными, я думаю, вам обязательно нужно потратить несколько дней и изучить Redux. Это стоит того. Даже если он вам не нужен и вы в конечном итоге не будете его использовать, он изменит ваше представление о потоках данных в React, улучшит вашу способность концептуализировать взаимосвязь между умными и глупыми компонентами в будущем, и это оставит вас с некоторыми действительно хорошими, повторяемыми шаблонами для общего использования в Javascript.