Redux FAQ
Содержание
- Главное
- Редюсеры
- Организация состояния(State)
- Могу ли я хранить всё мое состояние в Redux? Должен ли я всегда использовать setState() из React?
- Могу ли я хранить функции, промисы или другие несериализируемые данные в моем стейте?
- Как мне хранить вложенные или дублирующиеся данные в моем стейте?
- Должен ли я хранить состояние формы или другое состояние UI в моем сторе?
- Настройка стора(Store)
- Могу ли или должен ли я создавать несколько сторов? Могу ли я импортировать мой стор напрямую и использовать его в компонентах?
- Нормально ли использовать более одного мидлвара в моем расширителе стора ? В чем разница между next и dispatch в функции мидлвара?
- Как мне подписаться на получение только части стора? Могу ли я получить запущенный экшен, как часть подписки?
- Экшены
- Почему тип экшена должен быть строкой или по крайней мере сериализуемым? Почему мои типы экшенов должны быть константами?
- Всегда ли редюсеры и экшены преобразуются "один к одному"?
- Как я могу выполнять "сайдэффекты", такие как AJAX вызовы? Зачем нам нужны вещи типа “генераторов экшенов, “thunks” или “мидлвар” для осуществления асинхронного поведения?
- Какой асинхронный мидлвар должен я использовать? Как вы выбираете между thunks, sagas, observables или что-то еще?
- Должен ли я отправлять несколько экшенов подряд от одного генератора экшена?
- Иммутабельные данные
- В чем преимущество иммутабельности?
- Почему иммутабельность требуется Redux?
- Какие подходы существуют для управления иммутабельностью данных? Должен ли я использовать Immutable.JS?
- Каковы проблемы с использованием JavaScript для иммутабельных операций?
Использование Immutable.JS с Redux
- Почему я должен использовать иммутабельно-ориентированные библиотеки, такие как Immutable.JS?
- Почему я должен выбрать Immutable.JS в качестве иммутабельной библиотеки?
- Какие проблемы с использованием Immutable.JS?
- Стоит ли Immutable.JS этих усилий?
- Каковы некоторые устоявшиеся рекомендации по использованию Immutable.JS с Redux?
Структура кода
- Как должна выглядить моя файловая структура? Как я должен группировать мои генераторы экшенов и редюсеры в проекте? Где должны быть селекторы?
- Как я должен разделять мою логику между редюсерами и генераторами экшенов? Где должна быть "бизнес-логика"?
- Для чего я должен использовать генераторы экшенов?
- Где должны находиться веб-сокеты и другие постоянные соединения?
- Производительность
- Насколько хорошо “масштабируется” Redux с точки зрения производительности и архитектуры?
- Не будет ли вызов “всех моих редюсеров” для каждого экшена медленным?
- Должен ли я иметь полноценный клон моего стейта в редюсере? Не будет ли копирование моего стейта медленным?
- Как мне уменьшить количество событий обновления стора?
- Будут ли проблемы с памятью из-за использования “одного дерева состояния”? Будет ли вызов большого количества экшенов занимать память?
- Будет ли кеширование удаленных данных вызывать проблемы с памятью?
- Проектные решения
- Почему Redux не передает стейт и экшены подписчикам?
- Почему Redux не поддерживает использование классов для экшенов и редюсеров
- Почему сигнатура мидлварей использует каррирование?
- Почему applyMiddleware использует замыкание для диспатчинга?
- Почему
combineReducers
не включает третий аргумент со всем стейтом, когда он вызывает каждый редюсер? - Почему mapDispatchToProps не позволяет использовать возвращаемые значения из
getState ()
илиmapStateToProps ()
?
- React Redux
- Почему я должен использовать React-Redux?
- Почему мой компонент не перерендеривается? Почему не работает mapStateToProps?
- Почему мой компонент перерендеривается слишком часто?
- Как я могу ускорить mapStateToProps?
- Почему у меня недоступен this.props.dispatch в моем подсоединенном компоненте?
- Должен ли я подключить(connect) только мой корневой компонент или я могу подключить несколько компонентов в моем дереве?
- Разное