使用 redux-thunk-action-reducer NPM 包进行前端开发

如果你正在开发一个前端应用,你很可能已经用过了 Redux 这个 JavaScript 库来管理你应用的状态。Redux 是一个非常流行的状态管理工具,但它也有一些弊端。例如,当你需要处理异步行为的时候,Redux 原生的 Action 和 Reducer 模型就显得不太好用了。

这时候我们可以用一个 NPM 包叫做 redux-thunk-action-reducer 来简化我们的异步处理。下面是一个使用 redux-thunk-action-reducer 去请求数据的例子:

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

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

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

我们来详细解释一下这个例子的每个部分。

创建一个异步 Action

异步 Action 和普通的 Action 最大的区别就是它返回的不是一个对象,而是一个函数。这个函数可以接受两个参数:dispatch 和 getState。dispatch 用来触发一个新的 Action,而 getState 则可以获取到 Redux 的当前状态。

这里我们用 redux-thunk-action-reducer 中的 createAsyncAction 工具函数来创建一个异步 Action。

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

在这里我们使用了 async 和 await 来简化异步处理。createAsyncAction 的第一个参数是 Action 的 type,而第二个参数则是返回一个 Promise 的函数,这个函数会在 Action 被触发时被执行。

创建一个 Reducer

我们使用 createReducer 工具函数来创建一个 Reducer:

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

createReducer 接受两个参数:初始状态和一个 Action 到状态的映射。我们使用了 ES6 的解构语法来设置初始状态,并为每个异步 Action 设置了 REQUEST、SUCCESS 和 FAILURE 三个状态。

添加 Redux 中间件

为了让 Redux 支持异步 Action,我们需要添加一些叫做 middleware(中间件) 的东西。在 createAsyncAction 内部,redux-thunk-action-reducer 帮我们自动添加了异步支持所需要的 middleware,但是我们还需要手动添加一个 logger middleware。

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

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

发起请求

一旦我们定义了我们的异步 Action,我们就可以像调用普通的 Action 一样去调用它:

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

这个函数会返回一个 Promise,你可以使用 async 和 await 来等待它完成。

总结

在本文中,我们主要介绍了 redux-thunk-action-reducer 这个 NPM 包的使用方法。它能够帮助我们简化 Redux 应用中处理异步行为的代码,并在保留原有 Action 和 Reducer 模型的基础上给我们更多的自由度。我们希望这篇文章能够帮助你学习 Redux 异步操作的处理方式,从而更好地搭建你的前端应用。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60055aa981e8991b448d831a


猜你喜欢

  • npm 包 @savvy-css/breakpoint-variables 使用教程

    简介 @saavy-css/breakpoint-variables 是一个 npm 包,在前端开发中用来定义响应式断点的变量。这个包提供了一系列 css 变量,可以方便开发者写出更具响应式的布局。

    2 年前
  • npm 包 gbservices 使用教程

    简介 gbservices 是一个 Node.js 的第三方 npm 包,用于提供一些常用的工具函数和服务辅助函数,可以简化前端项目开发的工作量。该包的功能包括但不限于: 格式化时间 格式化数字 接...

    2 年前
  • npm 包 gqlf 使用教程

    前言 随着前端开发的迅速发展,越来越多的开发者开始将 GraphQL 作为服务端交互方式的首选。在使用 GraphQL 进行服务端交互时,引入 gqlf 这个 npm 包可以轻松实现 GraphQL ...

    2 年前
  • npm 包 ibird-service 使用教程

    简介 ibird-service 是一个基于 Koa 框架开发的轻量级 Web 服务框架,可以帮助开发者快速构建 RESTful 风格的 API 接口。除了提供 Koa 框架本身的功能外,ibird-...

    2 年前
  • npm 包 cordova-plugin-app-icon-changer 使用教程

    前言 对于一个应用来说,图标是非常重要的组成部分,可以说是应用的“门面”,能够在很大程度上影响用户对应用的印象。然而,在实际应用开发过程中,我们可能会需要动态更改应用的图标,例如根据用户的表现或行为更...

    2 年前
  • npm 包 asnack 使用教程

    在前端开发过程中,我们经常需要将代码分享给他人或者协作开发。如何让别人快速地理解我们的项目,并且能够快速进行项目的构建和运行呢?这就需要使用到一个工具——asnack。

    2 年前
  • npm 包 iotacss-tools-ms 使用教程

    在前端开发中,我们经常使用一些工具来帮助我们提高开发效率和代码质量。iotacss-tools-ms 是一款非常实用的 npm 包,它提供了一些开发工具,帮助我们更加高效地处理 CSS 中的尺寸单位。

    2 年前
  • npm 包 jshue 使用教程

    在前端领域,我们常常需要和各种各样的设备和工具进行交互,例如 Hue 照明系统的灯泡。在 Node.js 生态系统中,我们可以使用 jshue 这个 npm 包来方便地管理 Hue 灯泡。

    2 年前
  • npm 包 gwi-segment 使用教程

    简介 gwi-segment 是一款基于 Node.js 的中文分词 npm 包,可以实现将一段中文文本进行分词,提取其中每个词语的关键信息,以便后续的文本处理和分析。

    2 年前
  • npm 包 koa-by-logger 使用教程

    koa-by-logger 是一个 Node.js 的中间件,用于记录 Koa 应用程序的请求和响应。这个 npm 包是基于 koa-logger 代码库的改进版本,支持输出请求的 body 和 qu...

    2 年前
  • npm 包 Alfred-pods 使用教程

    Alfred-pods 是一款基于 Node.js 的 npm 包,能够让开发者快捷地从命令行搜索并打开 CocoaPods。本文将介绍如何使用 alfred-pods,并提供一些示例代码。

    2 年前
  • npm 包 awesome-node 使用教程

    在前端开发中,使用 npm 包可以大大提高工作效率和代码质量。其中有一个名为 awesome-node 的 npm 包,在 Node.js 应用开发中提供了许多实用的工具和类库。

    2 年前
  • npm 包 ibird-fields 使用教程

    介绍 ibird-fields 是一个基于 ibird 框架的 npm 包,它提供了更简单的方式来定义一系列表单字段(input、select、radio、checkbox、textarea 等)。

    2 年前
  • npm 包 pcancel 使用教程

    简介 npm 作为 Node.js 的包管理工具,是前端开发的必备工具之一。pcancel 是一个能够在 Promise 超时得到取消的模块,其可以让我们避免在 Promise 失败时仍然并行调用多个...

    2 年前
  • npm 包 iptables2 使用教程

    简介 iptables2 是一个 npm 包,旨在简化 Node.js 应用程序中管理 iptables 规则的过程。它提供了一组易于使用的 API,使开发人员可以轻松添加、删除和查询 iptable...

    2 年前
  • npm 包 nominatim-geocoder 使用教程

    前言 在前端开发中,我们经常需要使用地理编码(geocoding)这一技术来将地理位置转化为经纬度或是将经纬度转换为地址等操作。而针对这一问题,npm 上提供了许多易于使用的 geocoding 库,...

    2 年前
  • npm 包 hd-preloaderjs 使用教程

    介绍 在前端开发中,我们经常需要使用加载动画,以提高用户体验。hd-preloaderjs 是一个针对浏览器的预加载动画库,支持多种自定义参数。本篇文章将详细介绍 hd-preloaderjs 的使用...

    2 年前
  • npm 包 ibird-menu 使用教程

    简介 ibird-menu 是一个基于 Vue.js 和 ElementUI 开发的 npm 包,它提供了一种简单的方式去创建一个菜单组件,可以帮助前端开发者更加轻松地实现侧边栏导航菜单。

    2 年前
  • npm 包 helper-prompt 使用教程

    背景 在前端开发中,我们经常需要和用户进行一些交互,例如向用户要求输入一些数据或者确认某些操作。通常情况下,我们需要手动写一些代码来实现交互,这样比较繁琐并且容易出错。

    2 年前
  • npm 包 sinus-meta 使用教程

    Sinus-meta 是一个用于元数据管理的 npm 包,可以帮助前端开发者管理项目中的元数据信息。本文将介绍 sinus-meta 的使用方法和示例代码,希望可以帮助读者快速上手使用该工具。

    2 年前

相关推荐

    暂无文章