Repolode
reduxjs

reduxjs/reselect

Библиотека TypeScript для создания мемоизированных селекторов, вычисляющих производные данные на основе Redux или другого обычного состояния JavaScript.

Звёзды
19,005
Форки
666
Открытые issues
38
Последний коммит
23 часа назад

Что это?

Reselect предоставляет createSelector для создания мемоизированных функций-селекторов. Ей передают один или несколько входных селекторов, извлекающих значения из состояния, и функцию-результат, которая вычисляет на их основе производное значение. Выходной селектор пересчитывает результат, только если извлечённые значения изменились, а если изменений не было — возвращает ту же ссылку.

Это позволяет хранить в Redux только минимально необходимое состояние, вычисляя производные данные по мере необходимости. Селекторы также можно комбинировать: результат одного селектора может стать входом для другого. Reselect входит в Redux Toolkit, а отдельно его можно установить как пакет reselect.

Библиотека предлагает варианты мемоизации, такие как weakMapMemoize, lruMemoize и createSelectorCreator, позволяющие настраивать поведение, а также проверки стабильности входных селекторов и функций идентичности, которые работают только в режиме разработки.

Ключевые возможности

  • 01Создаёт мемоизированные селекторы, пропускающие пересчёт, если входные значения не изменились.
  • 02Позволяет комбинировать селекторы, используя другие селекторы в качестве входных.
  • 03Возвращает стабильные ссылки на результаты, помогая React-Redux и React избегать ненужных повторных рендеров.
  • 04Предоставляет createStructuredSelector для создания селекторов на основе объекта с селекторами.
  • 05Поддерживает пользовательскую мемоизацию с помощью createSelectorCreator, lruMemoize и weakMapMemoize.
  • 06Включает проверки нестабильных входных селекторов и функций-результатов, возвращающих входное значение без изменений; они работают только в режиме разработки.

Сценарии использования

  • Вычисление отфильтрованных или агрегированных данных на основе состояния Redux без избыточного хранения этих данных.
  • Передача props компонентам React через React-Redux с предотвращением ненужных повторных рендеров.
  • Создание многоуровневых селекторов, которые объединяют небольшие запросы к состоянию в более крупные производные представления.
  • Применение мемоизированных производных данных к любым неизменяемым данным JavaScript вне Redux.

Быстрый старт

  1. 1

    Установите отдельный пакет с помощью npm

    npm install reselect
  2. 2

    Или используйте Redux Toolkit, в который уже входит Reselect (дополнительная установка не требуется)

Темы

Частые вопросы

Что такое reselect?
Библиотека TypeScript для создания мемоизированных селекторов, вычисляющих производные данные на основе Redux или другого обычного состояния JavaScript. Reselect предоставляет createSelector для создания мемоизированных функций-селекторов. Ей передают один или несколько входных селекторов, извлекающих значения из состояния, и функцию-результат, которая вычисляет на их основе производное значение. Выходной селектор пересчитывает результат, только если извлечённые значения изменились, а если изменений не было — возвращает ту же ссылку.
reselect можно использовать бесплатно? Какая у него лицензия?
reselect распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
reselect всё ещё поддерживается?
Активно поддерживается. Последний коммит в reselect — 21 окт. 2026 г..
Для чего можно использовать reselect?
Вычисление отфильтрованных или агрегированных данных на основе состояния Redux без избыточного хранения этих данных. Передача props компонентам React через React-Redux с предотвращением ненужных повторных рендеров. Создание многоуровневых селекторов, которые объединяют небольшие запросы к состоянию в более крупные производные представления. Применение мемоизированных производных данных к любым неизменяемым данным JavaScript вне Redux.
Как установить reselect?
Установите отдельный пакет с помощью npm: npm install reselect Или используйте Redux Toolkit, в который уже входит Reselect (дополнительная установка не требуется)
Где скачать reselect?
Исходный код и инструкции по установке — на GitHub: https://github.com/reduxjs/reselect

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты