npm 包 reselectie 使用教程

阅读时长 5 分钟读完

什么是 reselectie?

reselectie 是一个可以帮助你管理输入的数据集合,提高性能的 JavaScript 库。他的特点是可以避免不必要的计算和渲染,提高了性能。

为什么使用 reselectie?

在复杂的前端应用中,拆分 state 是必要的。然而,当状态有多个来源和依赖关系时,可能会变得更加复杂且难以理解。这时,reselectie 可以优化性能,同时提高代码的可读性和可维护性。

例如,在 Redux 中,每次组件重新渲染时,都会计算状态的衍生状态。当依赖于多个状态的衍生状态变得更加复杂时,计算时间也就越长。reselectie 通过缓存衍生状态,仅在必要时执行计算,并使计算结果得以复用。

reselectie 的使用方法

安装 reselectie

你可以通过 npm 安装 reselectie:

创建选择器(Selectors)

在 reselectie 中,选择器是一个函数,它从 state 中提取和转换数据。如果输入数据的值没有发生变化,则选择器将直接返回缓存的结果,而不会计算函数的输出。这意味着即使您多次调用选择器,也不会多次计算结果。

例如,让我们创建一个获取用户信息的选择器:

在上述代码示例中,getUserDisplayName 接收状态 state 作为输入,然后返回组合后的字符串。该函数通过 createSelector 工厂函数创建,并具有两个参数:

  • 作为输入的状态选择器
  • 一个需要计算的函数,这个函数处理状态并生成所需输出

使用选择器

现在我们已经创建了一个选择器,下面将使用它来获取用户的展示名:

-- -------------------- ---- -------
------ - ------- - ---- --------------
------ - ------------------ - ---- --------------

----- --------------- - -- ----------- -- -- -------------------------

----- --------------- - ----- -- --
  ------------ --------------------------
---

------ ------- ------------------------------------------

在上面的例子中,我们使用 connect 函数将 UserDisplayName 组件连接到 Redux store。然后我们可以将展示名作为 displayName 属性传递到组件中。

Reselect 中的高阶选择器

reselect 还支持使用多个选择器生成结果的联合选择器。这通常称为 “高阶选择器”。

例如,我们可以创建一个高阶选择器来获取用户的展示名和年龄:

-- -------------------- ---- -------
------ - -------------- - ---- -----------

----- ------ - ----- -- ---------------

----- ------------------------ - ---------------
  --------
  -------
  ------ ---- -- --
    ------------ ------------------ ------------------
    ----
  --
--

------ ------- -------------------------

在上述代码示例中,getUserDisplayNameAndAge 接收两个状态选择器( getUsergetAge )和一个函数。该函数处理输入并返回一个包含用户展示名和年龄的对象。

然后我们可以使用 getUserDisplayNameAndAge 来获取这两个属性:

-- -------------------- ---- -------
------ - ------- - ---- --------------
------ ------------------------ ---- --------------

----- ----------- - -- ------------ --- -- -- -
  --
    ------------------------
    ----------------
  ---
--

----- --------------- - ----- -- --
  -----------------------------------
---

------ ------- --------------------------------------

总结

在使用 reselectie 时,我们需要:

  1. 创建一个或多个选择器。
  2. 使用选择器从状态中提取数据,并使用输出作为组件的属性。
  3. 在处理复杂的衍生状态时,使用联合选择器以避免多次执行重复数据。

结合 Redux 的使用,reselectie 可以帮助我们更轻松地管理输入数据,并提高前端应用的性能。我们建议您深入学习本文库,并在您的做法中尝试使用它。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600560de81e8991b448df218

纠错
反馈