Redux官方文档学习笔记 (四): 中间件 (Middleware)

前言

我们之前已了解了 Redux 的三大基本原则。 但是,实际情况遇到时,我们会发现在某些情况下,这些原则并不能完全满足我们的需求。本文中,我们将讨论 Redux 中的中间件 (Middleware), 并学习如何使用它来增强或改进 Redux 的功能。

中间件 (Middleware) 是一个函数,它可以调用 dispatch,并且它还具有以下属性:

  1. 它可以在 action 被发起之后,到达 reducer 之前,拦截 action。
  2. 它可以执行 dispatch,从而继续向下传递 action,或者阻止 action 的继续传递。
  3. 它可以访问 getState() 方法,从而获取当前 store 的状态。
  4. 它可以访问 dispatch 方法以及 getState 方法从而对 action 进行改变。

为什么需要中间件?

当你开始使用 Redux 时,你可能会遇到一些在处理异步操作时需要进行的额外操作,比如异步数据获取、日志记录、错误处理等等。为了解决这些问题, Redux 就引入了中间件机制。

例如,如果你希望在发出一个 action 时添加一些额外的操作,比如打印 log,那么你可以使用中间件实现这个需求。而且,由于中间件是可重用和可配置的,你可以在不同的情况下,对它们进行组合和使用。

中间件的使用方法

在 Redux 中,中间件是一个函数。通过调用 applyMiddleware 这个函数并传递一个或多个中间件到 createStore,中间件就可以被注册并处理从 dispatch 发出的所有 action。

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

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

如此注册中间件 thunk 就能够拦截发起的 actions, 在异步操作时在调用 dispatch 并执行其余操作。

Redux 中内置的中间件

applyMiddleware

在上述示例代码中,我们已经看到,Redux 中内置了一个 applyMiddleware 中间件函数。这个函数可以接收一个或多个中间件,并将它们放到一个数组中合并在一起。

thunk

thunk 中间件使得 action 创建函数可以返回一个函数,而不仅仅是一个 action 对象。这个函数可以在 dispatch 方法被调用时,执行异步操作,或者请求数据之后再发出 action 对象。

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

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

logger

logger 中间件使得在 dispatch 方法被调用时,日志记录被打印出来。

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

全文完整代码:

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

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

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

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

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

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

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

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

结论

本文我们介绍了 Redux 中间件的基本概念和使用方法。中间件可以使 Redux 的功能更加强大和灵活,同时还帮助解决了一些与异步操作相关的问题。在实践中,中间件得到了广泛的应用。因此,学会中间件的使用方法对于前端开发者而言是非常有价值的。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670f48965f55128102638ac5