一个用于可预测、可维护的全局状态管理的 JavaScript 库,可与 React 或其他视图库搭配使用。
reduxjs/reselect
一个用于创建记忆化 selector 函数的 TypeScript 库,常配合 Redux 从状态中派生数据。
- Star
- 19,005
- Fork
- 666
- 未关闭 Issue
- 38
- 最近提交
- 24小时前
这是什么?
Reselect 提供 createSelector,用于构建带记忆化的 selector 函数。你传入一个或多个从状态中取值的 input selector,再提供一个 result function 基于这些值计算派生数据。只有当提取的输入发生变化时,output selector 才会重新计算;输入未变时则返回同一个引用。
这样 Redux 只需保存最少的状态,派生数据按需计算。selector 还可以相互组合,一个 selector 的输出可以作为另一个的输入。Reselect 已内置于 Redux Toolkit,也可以作为独立的 reselect 包安装。
库中提供 weakMapMemoize、lruMemoize、createSelectorCreator 等记忆化方案用于定制行为,并提供仅在开发环境下生效的输入稳定性和恒等函数检查。
核心功能
- 01创建记忆化 selector,输入未变时跳过重新计算。
- 02支持把其他 selector 作为输入进行组合。
- 03返回稳定的结果引用,有助于 React-Redux 和 React 避免不必要的重渲染。
- 04提供 createStructuredSelector,可由一组 selector 构建对象型 selector。
- 05通过 createSelectorCreator、lruMemoize、weakMapMemoize 支持自定义记忆化策略。
- 06提供仅开发环境生效的检查,用于发现不稳定的 input selector 和恒等 result function。
适用场景
- 从 Redux 状态中派生过滤或聚合数据,避免冗余存储。
- 通过 React-Redux 向 React 组件传递 props,同时减少不必要的重渲染。
- 将小型状态查询组合为分层 selector,构建更复杂的派生视图。
- 对 Redux 之外的普通不可变 JavaScript 数据使用记忆化派生计算。
快速上手
- 1
使用 npm 安装独立包
npm install reselect - 2
或者使用已内置 Reselect 的 Redux Toolkit(无需额外安装)
标签
常见问题
- reselect 是什么?
- 一个用于创建记忆化 selector 函数的 TypeScript 库,常配合 Redux 从状态中派生数据。 Reselect 提供 createSelector,用于构建带记忆化的 selector 函数。你传入一个或多个从状态中取值的 input selector,再提供一个 result function 基于这些值计算派生数据。只有当提取的输入发生变化时,output selector 才会重新计算;输入未变时则返回同一个引用。
- reselect 可以免费使用吗?用的什么许可证?
- reselect 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- reselect 还在维护吗?
- 活跃维护中。reselect 最近一次提交是在 2026年10月21日。
- reselect 适合用来做什么?
- 从 Redux 状态中派生过滤或聚合数据,避免冗余存储。 通过 React-Redux 向 React 组件传递 props,同时减少不必要的重渲染。 将小型状态查询组合为分层 selector,构建更复杂的派生视图。 对 Redux 之外的普通不可变 JavaScript 数据使用记忆化派生计算。
- reselect 怎么安装和运行?
- 使用 npm 安装独立包: npm install reselect 或者使用已内置 Reselect 的 Redux Toolkit(无需额外安装)
- 在哪里获取 reselect?
- 源代码和安装说明在 GitHub 上:https://github.com/reduxjs/reselect
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个基于 Hook 的轻量 React 状态管理库,无需包裹 Provider。
Redux 官方的 React 绑定库,通过 Provider 和 Hooks 将 Redux 状态连接到 React 组件。
面向 Web 应用的异步状态管理与数据获取库,支持 React、Vue、Svelte 和 Solid。
一个 JavaScript 库,让你通过修改当前状态的草稿来生成新的不可变状态。
为 Redux 状态提供持久化与恢复,应用启动时自动把已保存的状态加载回 store。