npm 包 re-reselect 使用教程

阅读时长 5 分钟读完

介绍

re-reselect 是一个用于 Redux 应用程序的缓存选择器库。它基于 reselect 库,并向其添加了记忆结果缓存和清除缓存的功能。对于 Redux 应用程序来说,使用 re-reselect 可以提高应用程序的性能和响应速度。

安装

你可以通过 npm 安装 re-reselect:

使用

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

纠错
反馈