Неофициальный Бета-перевод
Эта страница переведена PageTurner AI (бета). Не одобрена официально проектом. Нашли ошибку? Сообщить о проблеме →
Redux FAQ (Часто задаваемые вопросы)
Содержание
-
Общие вопросы
-
Редьюсеры
-
Организация состояния
- Обязательно ли хранить всё состояние в Redux? Когда стоит использовать React-хуки
useStateилиuseReducer? - Можно ли хранить функции, промисы или другие несериализуемые объекты в хранилище?
- Как организовать вложенные или дублирующиеся данные в состоянии?
- Стоит ли хранить состояние форм или другой UI-логики в хранилище?
- Обязательно ли хранить всё состояние в Redux? Когда стоит использовать React-хуки
-
Настройка хранилища
- Можно или нужно создавать несколько хранилищ? Можно ли импортировать хранилище напрямую и использовать его в компонентах?
- Допустимо ли использовать несколько цепочек middleware в расширителе хранилища? В чём разница между next и dispatch в middleware?
- Как подписаться только на часть состояния? Можно ли получать диспатчинг экшенов через подписку?
-
Действия
- Почему тип должен быть строкой (или сериализуемым)? Зачем использовать константы для типов действий?
- Всегда ли есть взаимно-однозначное соответствие между редьюсерами и действиями?
- Как представить побочные эффекты (например AJAX-запросы)? Зачем нужны "создатели действий", "санки" и "middleware" для асинхронных операций?
- Какой асинхронный middleware выбрать? Как определиться между санками, сагами, observable-библиотеками и другими решениями?
- Можно ли диспатчить несколько действий подряд из одного создателя действий?
-
Неизменяемые данные (Immutable Data)
-
Структура кода
- Как должна выглядеть структура файлов? Как группировать экшены и редюсеры? Где размещать селекторы?
- Как распределять логику между редюсерами и экшенами? Где должна находиться "бизнес-логика"?
- Зачем использовать создание экшенов (action creators)?
- Где размещать websockets и другие постоянные соединения?
- Как использовать Redux-стор в файлах, не являющихся компонентами?
-
Производительность
- Насколько хорошо Redux "масштабируется" с точки зрения производительности и архитектуры?
- Не будет ли вызов всех редюсеров для каждого экшена медленным?
- Обязательно ли глубоко клонировать состояние в редюсере? Не замедлит ли копирование состояния работу?
- Как уменьшить количество событий обновления стора?
- Вызовет ли "единое дерево состояния" проблемы с памятью? Займут ли много памяти частые диспатчи экшенов?
- Вызовет ли кэширование удалённых данных проблемы с памятью?
-
Архитектурные решения
- Почему Redux не передаёт состояние и экшен подписчикам?
- Почему Redux не поддерживает использование классов для экшенов и редюсеров?
- Почему в сигнатуре middleware используется каррирование?
- Почему applyMiddleware использует замыкание для dispatch?
- Почему
combineReducersне передаёт третьим аргументом всё состояние при вызове редюсера? - Почему mapDispatchToProps не позволяет использовать возвращаемые значения из
getState()илиmapStateToProps()?
-
React Redux
- Зачем использовать React-Redux?
- Почему компонент не перерисовывается или mapStateToProps не выполняется?
- Почему компонент перерисовывается слишком часто?
- Как ускорить работу mapStateToProps?
- Почему в подключенном компоненте нет this.props.dispatch?
- Нужно ли подключать только корневой компонент или можно подключать несколько компонентов в дереве?
-
Разное