Перейти к содержанию

Главное

Когда я должен изучать Redux?

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

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

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

Статьи

Обсуждения

Когда я должен использовать Redux?

Необходимость использовать Redux не следует воспринимать как должное.

Пит Хант (Pete Hunt), один из первых контрибьюторов React говорит:

Вы поймете, когда вам нужен Flux. Если вы не уверены, что вам это нужно, вам это не нужно.

В тоже время, Дэн Абрамов (Dan Abramov), один из создателей Redux, говорит:

Я хотел бы уточнить: не используйте Redux, пока у вас есть проблемы с "ванильным" React.

В общем, используйте Redux, когда у вас есть обоснованные объемы данных, изменяющихся с течением времени, когда вам нужен один источник информации и когда вы обнаружите, что подходов, типа хранения всего в стейте высокоуровненого React-компонента, уже недостаточно.

Тем не менее, также важно понимать, что использование Redux сопряжено с компромиссами. Он не создан чтобы быть самым коротким или самым быстрым способом написания кода.

Он предназначен для того, чтобы помочь ответить на вопрос - "Когда же изменилась определенная часть состояния или откуда эти данные" с предсказуемым поведением. Он делает это, прося вас следовать определенным требованиям в вашем приложении: хранить состояние вашего приложения в виде простой структуры данных, описывать изменения в виде простых объектов и обрабатывать эти изменения с помощью чистых функций, которые применяют изменения иммутабельно. Это часто является источником жалоб на "шаблонность". Эти ограничения требуют усилий со стороны разработчика, но также и предоставляют ряд дополнительных возможностей (например, сохранение стора и синхронизацию).

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

Статьи

Обсуждения

Должен ли Redux быть использован только с React?

Redux может быть использован в качестве хранилища данных с любым уровнем представления. Чаще всего он используется с React и React Native, но также доступны биндинги для Angular, Angular 2, Vue, Mithril и других.

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

Нужны ли мне дополнительные инструменты для использования Redux?

Redux изначально написан на ES6 и транспилирован в ES5 при помощи Webpack и Babel. Вы должны быть в состоянии использовать его независимо от процесса сборки JavaScript. Redux также предоставляет UMD-сборку, которую можно использовать непосредственно без какого-либо процесса сборки вообще. Пример counter-vanilla демонстрирует основы использования ES5 с Redux, подключенного при помощи тега <script>. Как соответствующий pull request говорит:

Новый пример Counter Vanilla призван развеять миф о том, что Redux`у необходим Webpack, React, hot reloading, саги, генераторы экшенов, константы, Babel, npm, CSS модули, декораторы, беглый латинский, подписка на Egghead, степень доктора философии или уровень "Выше Ожидаемого" СОВ.

Неа, это всего лишь HTML, несколько кустарных <script> тэгов и старые добрые манипуляции с DOM. Наслаждайтесь!