Главное¶
Когда я должен изучать Redux?¶
Что изучать, может быть непреодолимым вопросом для разработчика JavaScript. Это помогает сузить диапазон вариантов, изучая одну вещь за раз и концентрируясь на проблемах, которые вы обнаружите в своей работе.
Redux - это шаблон для управления состоянием приложения. Если у вас нет проблем с управлением состоянием, вам может быть труднее понять преимущества Redux. Некоторые библиотеки пользовательского интерфейса (например, React) имеют собственную систему управления состоянием. Если вы используете одну из этих библиотек, особенно если вы только учитесь их использовать, мы рекомендуем вам сначала изучить возможности этой встроенной системы. Это может быть все, что вам нужно для создания приложения.
Если ваше приложение становится настолько сложным, что вы не понимаете, где хранится состояние или как оно изменяется, тогда самое время изучить Redux. Испытывание сложности, которую Redux стремится абстрагировать, является наилучшей подготовкой для эффективного применения этой абстракции к вашей работе.
Статьи
- Deciding What Not To Learn
- How to learn web frameworks
- Redux vs MobX vs Flux vs... Do you even need that?
Обсуждения
- Ask HN: Overwhelmed with learning front-end, how do I proceed?
- Twitter: If you want to teach someone to use an abstraction...
- Twitter: it was never intended to be learned before...
- Twitter: Learning Redux before React?
- Twitter: The first time I used React, people told me I needed Redux...
- Twitter: This was my experience with Redux...
- Dev.to: When is it time to use Redux?
Когда я должен использовать Redux?¶
Необходимость использовать Redux не следует воспринимать как должное.
Пит Хант (Pete Hunt), один из первых контрибьюторов React говорит:
Вы поймете, когда вам нужен Flux. Если вы не уверены, что вам это нужно, вам это не нужно.
В тоже время, Дэн Абрамов (Dan Abramov), один из создателей Redux, говорит:
Я хотел бы уточнить: не используйте Redux, пока у вас есть проблемы с "ванильным" React.
В общем, используйте Redux, когда у вас есть обоснованные объемы данных, изменяющихся с течением времени, когда вам нужен один источник информации и когда вы обнаружите, что подходов, типа хранения всего в стейте высокоуровненого React-компонента, уже недостаточно.
Тем не менее, также важно понимать, что использование Redux сопряжено с компромиссами. Он не создан чтобы быть самым коротким или самым быстрым способом написания кода.
Он предназначен для того, чтобы помочь ответить на вопрос - "Когда же изменилась определенная часть состояния или откуда эти данные" с предсказуемым поведением. Он делает это, прося вас следовать определенным требованиям в вашем приложении: хранить состояние вашего приложения в виде простой структуры данных, описывать изменения в виде простых объектов и обрабатывать эти изменения с помощью чистых функций, которые применяют изменения иммутабельно. Это часто является источником жалоб на "шаблонность". Эти ограничения требуют усилий со стороны разработчика, но также и предоставляют ряд дополнительных возможностей (например, сохранение стора и синхронизацию).
В конце концов, Redux - это всего лишь инструмент. Это отличный инструмент и есть ряд отличных причин, чтобы использовать его, но есть также причины, когды вы можете не захотеть использовать его. Принимайте обоснованные решения о своих инструментах и понимайте компромиссы, участвующих в каждом решении.
Статьи
- React How-To
- You Might Not Need Redux
- The Case for Flux
- Some Reasons Why Redux is Useful in a React App
Обсуждения
- Twitter: Don't use Redux until...
- Twitter: Redux is designed to be predictable, not concise
- Twitter: Redux is useful to eliminate deep prop passing
- Twitter: Don't use Redux unless you're unhappy with local component state
- Twitter: You don't need Redux if your data never changes
- Twitter: If your reducer looks boring, don't use redux
- Reddit: You don't need Redux if your app just fetches something on a single page
- Stack Overflow: Why use Redux over Facebook Flux?
- Stack Overflow: Why should I use Redux in this example?
- Stack Overflow: What could be the downsides of using Redux instead of Flux?
- Stack Overflow: When should I add Redux to a React app?
- Stack Overflow: Redux vs plain React?
- Twitter: Redux is a platform for developers to build customized state management with reusable things
Должен ли 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. Наслаждайтесь!