介绍
re-reselect 是一个用于 Redux 应用程序的缓存选择器库。它基于 reselect 库,并向其添加了记忆结果缓存和清除缓存的功能。对于 Redux 应用程序来说,使用 re-reselect 可以提高应用程序的性能和响应速度。
安装
你可以通过 npm 安装 re-reselect:
npm install re-reselect --save
使用
re-reselect 提供两种类型的选择器:cachedSelector 和 createCachedSelector。
cachedSelector
cachedSelector 与 reselect 的 createSelector 类似,但是它增加了一个 clearCache 方法,用于清除缓存。
-- -------------------- ---- ------- ------ - -------------- - ---- -------------- ----- ---------- - --------------- ----- -- ---------------- ----- -- ----- - - -- -- ----- ----- ------ - ------------------ -- ---- ------------------------
createCachedSelector
createCachedSelector 的用法也非常类似于 createSelector,它还提供了 clearCache 和 removeMatchingSelector 方法,用于清除缓存和删除匹配的选择器。
-- -------------------- ---- ------- ------ - -------------------- - ---- -------------- ----- ---------- - --------------------- ----- -- ---------------- ----- -- ----------------- ----------- ----------- -- --------- - ---------- -- ------- ------- -- ------- ------- ------- ------- -- ------- ------- ------- ------- ------- -- ------ -- -- ----- ----- ------ - ----------------- --------- --------- ---------- -- ---- ------------------------ -- -------- ---------------------------------- ------- ------- ------- ------- -- ------ --- -------- --
createCachedSelector 还支持缓存键,例如:
-- -------------------- ---- ------- ------ - -------------------- - ---- -------------- ----- ---------- - --------------------- ----- -- ---------------- ----- -- ----------------- ----------- ----------- -- --------- - ---------- -- ----- -- ----------- ------- ------ -- ----- -- -- ----- ----- ------ - ----------------- ------- --------- -- ---- ------------------------------------
在此例中,mySelector 会根据传入的参数动态计算缓存的键。当使用特定键调用 clearCacheForKey
方法时,将清除特定键的缓存。
示例
下面是一个使用 createCachedSelector 的例子:
-- -------------------- ---- ------- ------ - -------------------- - ---- -------------- ----- ----------------- - ----- -- -------------------- ----- -------------------- - ----- -- ----------------------- ----- ---------------------- - --------------------- ------------------ --------------------- ---------- --------- -- ---------------- ------- -- ------------------------------ --- ---------------------- - -- ----- -- ---------------------- -- -- ----- ----- ---------------- - ------------------------------ -- -------------------------- ----------------------------------------------------------------
上述示例中,我们定义了两个选择器,分别提取产品列表和类别过滤器。我们使用 createCachedSelector 创建了一个新选择器 selectFilteredProducts,以此选择器和 filters.category 作为缓存键缓存已筛选的产品列表。此时,传入与上次不同的类别过滤器时,将清除特定键的缓存以计算新的选择器。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f79603b7116197505561b3c