npm包:redux-enhancer的使用教程

阅读时长 8 分钟读完

前言

在前端开发中,状态管理是非常重要的一部分。Redux 是一种极其流行的状态管理库。它使得状态管理更加易于维护和控制。Redux提供了一个灵活的 API,使得开发者可以深入自定义 Redux 数据流的处理逻辑。在这篇文章中,我们将讨论如何使用Redux Enhancer有效的扩展Redux应用。

Redux Enhancer 是什么?

Enhancer 是一种拓展 Redux store 的方式。它们是一些可以包装 store 到其它 store 的高阶函数。通过传入新的 reducer、middleware、state 或者增强器,来生成一个新的 store 。

Redux的开发团队预设了applyMiddleware 和 compose 来支持 store 增强器的实现。开发者只需要实现自己的 store 增强器,然后在创建 store 时通过 applyMiddleware 和 compose 来使用它即可。

Redux Enhancer 主要的作用是通过对 store 的 action 的中间件方法进行拦截并扩充,来对 Redux 应用进行一些附加的特性、功能或者行为。

Redux-enhancer 的使用教程

在 Redux 中,如何使用 Enhancer 呢?redux-enhancer 就是其中的一个增强器。通过使用 redux-enhancer ,你可以轻松的实现如下功能:

1.【缓存】:可以根据某个特定条件为状态缓存添加时间限制。 2.【手动保存】:可以在程序将关闭之前向服务器手动保存状态。 3.【Logger】:可以记录 Redux Store 中的所有变化。 4.【记录Undo / Redo历史记录】:可以记录 Store 的每一个更新,以支持撤销/重做操作。 5.【组合】:可以轻松的组合多个增强器。

接下来我们将使用redux-enhancer增强器来实现一个非常简单的 Redux应用。

示例代码

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

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

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

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


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

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

这段代码演示了我们如何在每个reducer方法被调用的时候,记录下每一次存储在 store 中的状态变更。现在让我们通过逐行讲解来理解这段代码。

首先,我们导入 createStore 和 applyMiddleware 方法,以及 enhancer 增强器。

接下来,我们定义了我们应用的“初始状态”。

我们的应用仅仅是一个计数器,它的初始值为0,每当 ADD 或 SUBTRACT action 被分发时,它的值将增加或减少。

我们还需要定义一个reducer方法。这个方法会接收两个参数。第一个参数是我们应用的当前状态,第二个参数是一个 action 对象。

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

这个reducer方法只是简单的根据action中不同的type值来增加或减少状态。我们现在使用这个reducer来创建我们的 store:

我们要使用 applyMiddleWare 方法来将 enhancer增强器 注入到 createStore 创建的方法中。我们在这里同时传入了我们定义了的 logger,cache 和 persist方法。

最后,我们定义了三个中间件来扩展我们的应用。首先是 logger,它会记录每次状态变更,并打印出来。

接着是 cache 方法,它可以根据我们在 add action 中传入的值设置 time-to-live 应用程序。如果我们采用此方法,那么一定时间内每次触发 add action 时,我们的应用就会在本地存储中缓存一份数据。

最后是 persist 方法,当关闭我们的应用时,它可以将状态,以及我们最近采取的操作都保存在我们的本地存储中。

总结

在本文中,我们先分析了Reudx Enhancer的原理,然后介绍了实现这种增强器的一个npm包 redux-enhancer。后面的示例代码我们展示了如何使用redux-enhancer,记录Store的state和action,并存储在本地。了解到加强器的使用,可以让我们有能力更好的管理我们的状态,增强我们的状态管理,方便我们进行系统的调试和维护。

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

纠错
反馈