Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →
Redux FAQ: Общие вопросы
Когда стоит изучать Redux?
Выбор технологий для изучения может быть непростой задачей для JavaScript-разработчика. Лучше сузить круг вариантов, изучая что-то одно и фокусируясь на проблемах, с которыми вы сталкиваетесь в работе. Redux — это паттерн для управления состоянием приложения. Если у вас нет проблем с управлением состоянием, преимущества Redux могут показаться неочевидными. Некоторые UI-библиотеки (например, React) имеют встроенные системы управления состоянием. Если вы используете такую библиотеку, особенно на этапе обучения, мы рекомендуем сначала освоить её встроенные возможности. Возможно, этого будет достаточно для вашего приложения. Когда приложение становится настолько сложным, что вы путаетесь в том, где хранится состояние или как оно изменяется, — это подходящее время для изучения Redux.
Мы рекомендуем большинству новичков сначала изучить React, а к Redux переходить только после уверенного владения React. Так вы одновременно изучаете меньше новых концепций, чётче видите разницу между возможностями React и Redux, а также лучше понимаете, как Redux интегрируется в React-приложение и зачем он нужен.
Дополнительные материалы
Статьи
Обсуждения
Когда стоит использовать Redux?
Не всем приложениям нужен Redux. Важно понимать, какое приложение вы создаёте, какие проблемы решаете и какие инструменты лучше всего подходят для ваших задач.
Redux помогает управлять общим состоянием, но, как любой инструмент, имеет компромиссы. Он не создан для максимально быстрого написания кода. Его цель — дать предсказуемые ответы на вопросы "Когда изменилась конкретная часть состояния и откуда пришли данные?". Это требует изучения дополнительных концепций, написания большего объёма кода, введения косвенности и соблюдения определённых ограничений. Это компромисс между краткосрочной и долгосрочной продуктивностью.
Как говорит Пит Хант, один из ранних контрибьюторов React:
Вы поймёте, когда вам понадобится Flux. Если сомневаетесь — он вам не нужен.
Аналогично, Дэн Абрамов, создатель Redux, добавляет:
Уточню: не используйте Redux, пока у вас не возникнут проблемы с чистым React.
Redux наиболее полезен в следующих случаях:
-
У вас есть большой объём состояния приложения, который требуется во многих частях приложения
-
Состояние приложения часто обновляется
-
Логика обновления этого состояния может быть сложной
-
Приложение имеет средний или крупный кодобазу, над которым могут работать многие разработчики
-
Вам нужно отслеживать, как состояние изменяется с течением времени
Также существуют другие инструменты, которые могут решать некоторые из тех же задач, что и Redux: управление состоянием, кэширование данных с сервера и передача данных через интерфейс.
Если вы не уверены, подходит ли Redux для вашего приложения, эти материалы помогут принять решение:
В конечном счёте, Redux — всего лишь инструмент. Это отличный инструмент с весомыми преимуществами, но есть и причины его не использовать. Принимайте обоснованные решения о выборе инструментов и понимайте компромиссы каждого варианта.
Дополнительные материалы
Документация
Статьи
Обсуждения
-
Twitter: Redux полезен для устранения глубокой передачи пропсов
-
Twitter: Не используйте Redux, если вас устраивает локальное состояние компонентов
-
Twitter: Вам не нужен Redux, если ваши данные никогда не меняются
-
Twitter: Если ваш редюсер выглядит скучно, не используйте redux
-
Reddit: Вам не нужен Redux, если приложение просто получает данные на одной странице
-
Stack Overflow: Зачем использовать Redux вместо Facebook Flux?
-
Stack Overflow: Зачем мне использовать Redux в этом примере?
-
Stack Overflow: Какие недостатки у Redux по сравнению с Flux?
-
Stack Overflow: Когда следует добавлять Redux в React-приложение?
-
Twitter: Redux — это платформа для кастомного управления состоянием с переиспользуемыми компонентами
Можно ли использовать Redux только с React?
Redux можно использовать как хранилище данных для любого UI-слоя. Чаще всего его применяют с React и React Native, но существуют привязки для Angular, Angular 2, Vue, Mithril и других библиотек. Redux просто предоставляет механизм подписки, который может использоваться любым кодом. Тем не менее, он наиболее полезен при комбинации с декларативными представлениями, которые могут выводить обновления интерфейса из изменений состояния, как это делают React или аналогичные библиотеки.
Нужны ли специальные инструменты сборки для использования Redux?
Redux написан на современном синтаксисе JavaScript (ES2020), но его код достаточно прост.
Если вам требуется поддержка старых браузеров, выполните транспиляцию самостоятельно.
Пример counter-vanilla демонстрирует базовое использование ES5 с подключением Redux через тег <script>. Как сказано в соответствующем pull request:
Этот пример создан, чтобы развеять миф о том, что Redux требует Webpack, React, горячую перезагрузку, саги, создателей действий, константы, Babel, npm, CSS-модули, декораторы, беглую латынь, подписку на Egghead, PhD или уровень O.W.L. "Превосходно".
Вовсе нет! Тут только HTML, рукописные теги
<script>и классические манипуляции с DOM. Наслаждайтесь!