Redux 中的 PromiseMiddleware 详解

阅读时长 6 min read

在 Redux 应用中,我们常常需要处理异步操作,例如发送请求、获取响应等。在 Redux 中,PromiseMiddleware 可以使我们更方便地处理这些异步操作。本文将介绍 Redux 中的 PromiseMiddleware 并详细讲解其使用方法和技巧。

什么是 PromiseMiddleware

PromiseMiddleware 是 Redux 中的一个中间件,它可以为 Redux 应用提供处理异步操作的能力。它的主要作用是将 Action 转换为 Promise 以处理异步操作,并利用 Redux 的特性来处理异步操作所带来的状态变化。

PromiseMiddleware 的基本用法

使用 PromiseMiddleware 很简单,只需要将其作为 Redux createStore 方法的第二个参数即可:

接下来,我们就可以在 Action 中使用 Promise 了。例如,假设我们有一个获取用户信息的 Action:

在 PromiseMiddleware 的帮助下,我们可以很方便地将这个异步操作封装为 Promise,并在获取到响应时以 payload 参数的形式传递给 Action。

PromiseMiddleware 的高级用法

PromiseMiddleware 不仅仅只是帮助我们处理异步操作,它还有许多高级用法。下面我们就来介绍一些 PromiseMiddleware 的技巧。

1. withExtraArgument

withExtraArgument 是 PromiseMiddleware 提供的一个方法,它可以让我们将额外的参数传递给每个 Promise:

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

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

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

-- ---

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

在上面的例子中,我们将 someApi 对象作为额外参数传递给了 withExtraArgument。在后面的 Action 中,我们可以通过异步操作函数的第二个参数获取这个额外参数,并在异步操作中使用它。

2. 定制 Promise 类型

在默认情况下,PromiseMiddleware 返回的 Action 的类型为原始的 Action 类型后加上 _PENDING_FULFILLED_REJECTED,分别表示异步操作进行中、已完成和已拒绝。如果我们想要定制这些后缀,可以通过修改 PromiseMiddleware 的配置来实现:

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

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

-- ---

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

在上面的例子中,我们将 PromiseMiddleware 的配置修改为将 Action 类型后缀分别改为 LOADING、SUCCESS 和 FAILURE。我们还在 Action 的 payload 中增加了一个 data 属性,用于存放我们传递给异步操作的参数。

3. 获取异步操作的状态

在使用 PromiseMiddleware 时,我们不仅可以获取异步操作的结果,还可以获取它的状态。例如,我们可以通过添加 _PENDING_FULFILLED_REJECTED 后缀的类型来获取异步操作的状态:

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

-- ---

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

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

在上面的例子中,我们在 Action 的 meta 中添加了 thunk: truepromiseTypeSuffixes 属性,分别表示这是一个异步 Action 和异步操作的状态后缀。在后面的代码中,我们通过查询 store 中的状态,以判断异步操作的状态。

结语

本文介绍了 Redux 中的 PromiseMiddleware,并详细讲解了其使用方法和技巧。当你需要处理异步操作时,PromiseMiddleware 可以为你提供很大的帮助。如果你想更深入地了解 Redux,强烈建议你阅读 Redux 官方文档并参阅 Redux 应用开发实践。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67c1450a314edc268491897e

Feed
back