npm 包 redux-action-thunk 使用教程

阅读时长 8 分钟读完

前言

在前端开发中,状态管理是一个非常重要的问题,Redux 是一个非常流行的状态管理框架。然而,使用 Redux 进行状态管理时,在处理异步逻辑上可能会显得有些棘手。为此,社区中推出了许多的异步 action 库,其中最为流行且被广泛使用的为 redux-thunk。

然而,随着项目变得越来越庞大,以及应对复杂逻辑的需要,redux-thunk 曾经被认为并不是最优的选择。于是,redux-action-thunk 库应运而生,它可以使得我们在处理异步逻辑上变得更加方便、简单。本文将为大家详细介绍 npm 包 redux-action-thunk 的使用教程。

安装

首先,您需要在项目中安装 redux-action-thunk,可以通过如下命令进行安装:

基本使用

在介绍 redux-action-thunk 的使用方法之前,让我们先来回顾一下 redux-thunk 的使用方法。

redux-thunk

在 redux-thunk 中,我们需要使用 thunk 函数来进行异步处理。具体使用方法如下:

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

如上,我们通过返回一个函数,在异步操作完成后再度 dispatch 一个 action,从而更新我们的 state。

redux-action-thunk

在 redux-action-thunk 中,我们将 dispatch 与异步操作的逻辑处理逻辑从 thunk 函数中抽离出来。具体使用方法如下:

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

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

值得注意的是,我们需要引入 createAsyncThunk 函数来处理代码。另外,在 redux-action-thunk 中,我们需要返回一个对象,包括 typepayload 字段,这与 redux-thunk 中返回一个函数的方法不同。此外,我们在 createAsyncThunk 函数中需要传入一个 action 类型和一个发起异步请求的方法。

在我们调用 fetchDataWithThunk 请求数据时,只需要如下进行调用即可:

此外,我们还可以将 dispatch 以及 getState 方法传入到异步处理方法中,以对我们的 state 做更为精细的处理。代码实现如下:

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

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

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

案例演示

为了方便理解,我们掌握 redux-action-thunk 的用法,下面我们来演示一个 click 案例:

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

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

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

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

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

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

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

在上面的演示中,我们请求了一个接口数据,并将通过请求到的数据渲染到页面中。 另外,我们还增加了一个 Counter 按钮,点击此按钮可以计数器加 1。而在 redux-action-thunk 中,也同样可以使用 count 的处理逻辑,具体代码如下:

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

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

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

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

在上面的代码中,我们首先创建一个初始值为 0 的计数器,并创建了两个 action 类型 INCREMENTDECREMENT,在 createAsyncThunk 中,我们传入了一个 action 类型和一个异步逻辑处理的函数,其中我们通过 startCount.actions.INCREMENT 的方式对计数器进行增加操作。这里的 startCount.actions.INCREMENT 表示我们通过 createSlice 函数创建的 action 类型。

然后,我们将 startCountWithThunk 绑定到计数器的按钮上,并将 count 的值渲染到了页面中。关于 startCount 的使用则是根据 redux-starter-kit ,我这里就不进行过多的介绍了,有兴趣的朋友可以自行了解。

结语

在本文中,我们介绍了 npm 包 redux-action-thunk 的使用方法。相比于 redux-thunkredux-action-thunk 更加简洁,以及易用。在处理异步逻辑时,redux-action-thunk 可以使您的代码更加简单明了,使得您可以专注于业务逻辑处理,提高开发效率。

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

纠错
反馈