npm 包 redux-action-thunk 使用教程

前言

在前端开发中,状态管理是一个非常重要的问题,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


猜你喜欢

  • npm 包 reem-flow 使用教程

    什么是 reem-flow reem-flow 是一个基于 React 的 UI 组件库,其特性包括支持响应式设计、支持主题切换、支持多语言等。reem-flow 提供了一些常用的 UI 组件,包括按...

    4 年前
  • npm 包 reem-markdown 使用教程

    在前端开发中,我们经常需要使用 markdown 语法来编写文档、博客等等。为了更高效地处理 markdown,npm 上推出了很多可供选择的插件。其中,reem-markdown 是一款功能比较全面...

    4 年前
  • npm 包 reemoji 使用教程

    简介 随着现代社交的流行,表情符号也逐渐成为了人们沟通中不可或缺的一部分。在前端开发中,我们常常需要在界面上展示表情符号。然而,表情符号的编码很多,手动输入或复制粘贴工作量较大。

    4 年前
  • npm 包 reepo 使用教程

    简介 reepo 是一个基于 Git 的版本控制系统的轻量级封装工具,旨在提高代码协作效率和管理组件库的便利性。通过 reepo,开发者可以将组件库中的代码交给 reepo 管理,进行版本控制和文件管...

    4 年前
  • npm 包 reentry-server 使用教程

    在前端开发中,如何实现前后端分离并且快速开发呢?这时候一个好用的 npm 包 reentry-server 就可以派上用场了。它可以帮助我们快速构建一个本地开发服务器并提供一些实用工具。

    4 年前
  • npm 包 redux-values 使用教程

    简介 redux-values 是一个基于 Redux 的状态管理库,在处理应用状态中的对象值时非常有用。它提供了一种简单的方式,将“对象值”作为 redux actions 发送,从而在应用状态中动...

    4 年前
  • npm 包 redux-validator 使用教程

    在前端开发中,数据的有效性验证是至关重要的。Redux是一个非常流行的状态管理库,而redux-validator就是一个专门用于验证Redux中的数据有效性的npm包。

    4 年前
  • npm 包 regex-viewer 使用教程

    前言 正则表达式是前端开发者必备的技能之一,但是在匹配复杂的表达式时会变得棘手。为了更好地理解和调试正则表达式,我们需要一些工具来帮助我们进行可视化匹配。其中一个非常好用的工具就是 npm 包 reg...

    4 年前
  • npm包 redux-via使用教程

    Redux是现在前端开发中最流行的状态管理工具之一,它的流程和设计使得在大型应用程序的开发中变得更加容易和有逻辑。redux-via这个npm包为我们提供了使用Redux当中异步操作的一个简化方案,这...

    4 年前
  • npm 包 redux-via-socket.io 使用教程

    在现代的 Web 应用程序中,为了使应用程序的不同部分之间的状态共享变得更加容易,Redux 应运而生。Redux 是一个 JavaScript 应用程序状态容器,集中管理应用程序的状态并通过单向数据...

    4 年前
  • npm 包 related-selector 使用教程

    如果你曾经在开发前端项目的时候,遇到过下拉框、多级联动等场景,你一定会知道需要使用多种 jQuery 插件。但是这些插件并没有完全满足我们的需求,这时候就需要一个能够快速帮助我们完成这些功能的库——r...

    4 年前
  • npm 包 related-timestamps 使用教程

    在前端开发中,我们有时需要将时间戳转换为时间或将时间转换为时间戳。如果手动去实现这些转换可能比较麻烦,而 related-timestamps 这个 npm 包则可以帮助我们轻松地实现这些功能。

    4 年前
  • npm 包 related-uuid 使用教程

    随着前端应用变得越来越复杂,我们经常需要在应用程序中生成唯一标识符。而使用 npm 包 related-uuid 可以非常简单地实现这一目的。 什么是 related-uuid 包? related-...

    4 年前
  • npm 包 relatedjs 使用教程

    npm 是一个流行的 Node.js 包管理器,它可以让开发者方便地使用和分享代码库。在前端开发领域,使用相关 js 库可以帮助我们更高效地开发应用。相关 js 库是一个用于生成相关内容的 JavaS...

    4 年前
  • npm 包 relational-json 使用教程

    简介 relational-json 是一个能够将普通的 JSON 转换为关系型数据结构的 npm 包。它可以非常方便地在前端进行数据处理,特别是在需要进行关系型数据操作时。

    4 年前
  • npm 包 relation-manager 使用教程

    前言 在前端开发中,我们经常需要处理各种数据集合之间的关系,例如关系型数据库的表之间的关系,或者各种数据集的父子关系等等。这些关系复杂多样,处理起来也比较繁琐。幸运的是,npm 社区提供了许多方便的包...

    4 年前
  • npm 包 relational.js 使用教程

    介绍 relational.js 是一款轻量级的 JavaScript 库,专门用于关系型数据的处理。它提供了一系列函数,用于对关系型数据进行各种常见操作,如过滤、排序、分组等。

    4 年前
  • npm 包 relativ 使用教程

    什么是 relativ? relativ 是一个非常有用的 npm 包,可以帮助前端开发者轻松地进行相对单位的转换。无论是在响应式设计中根据视口宽度计算元素尺寸,还是根据父元素尺寸自适应设置样式,re...

    4 年前
  • npm 包 relationship.js 使用教程

    介绍 relationship.js 是一个轻量级的 JavaScript 库,它提供了一个方便的方式来表达关系图数据,并可将其呈现为可定制的关系图形式。本文将介绍如何使用 relationship....

    4 年前
  • npm 包 relations 使用教程

    在前端开发中,我们通常会使用到各种各样的 npm 包来帮助我们实现一些功能,加快我们的开发效率。其中,npm 包 relations 就是一款非常实用的工具,它可以用来可视化显示 npm 包的依赖关系...

    4 年前

相关推荐

    暂无文章