npm 包 redux-optimistic-thunk 使用教程

前言

在 Web 开发中,前端作为用户与服务器之间的桥梁,对用户体验至关重要。Redux 是其中重要的数据管理框架,而 redux-optimistic-thunk 包则是为了解决并发问题而出现的。

什么是 redux-optimistic-thunk

redux-optimistic-thunk 是一个增强型的 Redux Thunk 中间件,它具有一些优异的特性,我们来一一解释:

  1. 它允许异步操作正常地进行,并且在等待完成的同时也启动了一些本地的操作,这些本地操作是不必与服务器进行交互的;
  2. 它允许了轻松地撤回操作,这意味着如果一个操作失败了,那么我们可以简单地撤回这个操作,而不需要任何后续操作;
  3. 它会自动将操作转换为 Promise,这样我们就可以更加清晰地进行错误处理和流程控制。

redux-optimistic-thunk 的使用

安装包

首先,我们需要安装 redux-optimistic-thunk 包,使用以下命令:

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

在 Redux 中使用

在 Redux Store 中引入 redux-optimistic-thunk:

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

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

在这里,我们将 redux-optimistic-thunk 应用于我们的 Redux Store。

使用基本 thunk

我们可以通过使用 redux-optimistic-thunk 来创建基本的 thunk 处理程序。一个基本的 thunk 通常像下面这样:

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

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

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

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

在这里,我们首先定义了一个名为 fetchData 的基本 thunk,它会 dispatch 3 个不同的 action,对应了请求开始、请求成功和请求失败。接下来,我们使用 optimistic 高阶函数来创建一个新的 thunk,它有一些额外的选项:

  • onRollback:一个函数,可以通过它来撤回之前的操作;
  • startType、endType 和 errorType:分别代表操作的开始、结束和失败的 action 名称。

我们还可以像这样为我们的新操作添加 payload 和其他属性:

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

在这里,我们添加了一个名为 payload 的新选项,同时也添加了一个名为 meta 的选项。这些属性会添加到最终的 action 中,可以在我们的 reducer 中进行进一步处理。

同时发送多个操作

我们可以同时发起多个操作,并使用不同的操作 ID 来对这些操作进行区分。这种方式可以更容易地进行分组,并更好地组织我们的代码。

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

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

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

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

在这里,我们定义了一个名为 fetchData 的基本 thunk,它会请求指定 ID 的数据。我们使用 optimistic 高阶函数来创建我们的新 thunk,它不再需要任何选项。我们在 Redux 中使用这个 thunk 时,将传递不同的 ID,以便针对这些操作进行不同的操作。

撤销操作

我们也可以使用 onRollback 选项来撤销我们之前执行的操作。这将会用于处理那些出错的请求。

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

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

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

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

在这里,当我们错误地请求数据时,我们将会通过 dispatch action 来撤销之前的操作。我们还添加了一些错误处理逻辑,这将会在我们进一步处理这些错误时使用,我们在误操作时会将 error 抛出供错误处理使用。

小结

在这篇文章中,我们学习了如何使用 redux-optimistic-thunk 包来处理并发操作,这在 Web 开发中是一种非常常见的需要。我们还学习了如何使用这个包中存在的不同选项来进行更加精细的流控制以及错误处理。这些技巧将帮助我们更好地优化我们的前端代码,提升用户体验。

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


猜你喜欢

  • NPM包Hyperapp-Slider使用教程

    HTML表单输入中的滑动条组件是Web开发中的常见需求之一。现在有很多不同的Javascript库可以用来创建这种滑动条组件。其中一个流行的Javascript库就是Hyperapp-Slider。

    3 年前
  • npm 包 mhustad-palindrome 使用教程

    实现一个回文判断函数是前端开发中常见的任务。npm 上有很多现成的包,其中一个比较好用的是 mhustad-palindrome。本文将介绍如何使用该包。 安装 使用 npm 安装 mhustad-p...

    3 年前
  • npm 包 lodash-redux-immutability 使用教程

    在前端开发中,使用 Redux 可以良好地管理应用程序的状态,并通过 Redux 提供的中间件实现一些想要的功能。然而,当我们需要修改应用程序状态时,有时会遇到一些困难,特别是当我们需要对复杂的嵌套对...

    3 年前
  • npm 包 ttk-edf-app-list-department-personnel 使用教程

    本文将介绍如何使用 npm 包 ttk-edf-app-list-department-personnel 打造一个前端部门人员列表的应用。这个应用可以方便地展示公司的部门组织结构和人员信息,对于公司...

    3 年前
  • npm 包 @jamesism/react-native-gifted-chat 使用教程

    在 React Native 应用开发中,使用聊天功能是非常常见的需求。而 @jamesism/react-native-gifted-chat 就是一款提供了聊天界面组件的 npm 包,可以帮助我们...

    3 年前
  • NPM 包 ssman 使用教程

    前言 SSMAN 是一个基于 Node.js 开发的 HTTP 请求模拟器,同时也是一款方便调试前端应用的工具。本文将为您详细介绍如何使用该工具。 安装 首先,需要在命令行中使用 npm 安装 ssm...

    3 年前
  • npm 包 typr-ts 使用教程

    前言 在前端开发中,我们常常会遇到需要进行类型转换的情况。比如数据传输、数据格式的校验、类型的判断和转换等。为了方便和高效地进行类型转换,我们可以使用 npm 包 typr-ts。

    3 年前
  • npm 包 jhashcode 使用教程

    在前端开发中,使用 JavaScript 常常需要对一些字符串进行哈希操作,来生成唯一标识符或者进行数据校验等任务。而 jhashcode 就是一个能够帮助我们完成哈希操作的 npm 包。

    3 年前
  • npm 包 mingo-stream 使用教程

    如果你是一位前端开发者,那么你就一定会用到各种各样的 npm 包来协助你完成项目,其中,mingo-stream 就是一个非常实用的包。它可以让你更加高效地操作数组,并且让你的代码更加简洁易读。

    3 年前
  • npm 包 netsuite-sync-watcher 使用教程

    介绍 netsuite-sync-watcher 是一个可以用于监听 NetSuite 中记录变化的 npm 包。如果你正在使用 NetSuite,那么这个包可以帮助你捕捉到记录的变化,并在本地或者第...

    3 年前
  • npm 包 observable-cache 使用教程

    简介 随着前端应用的复杂度增加,数据的状态管理已经成为了开发者不可避免的问题。为了解决这个问题,现在已经有了很多优秀的状态管理库,例如 Redux 和 Mobx 等等。

    3 年前
  • npm 包 sample-demo-migration 使用教程

    在前端开发过程中,我们难免会遇到迁移项目的情况。这时候,一个好的迁移工具可以极大地帮助我们提高开发效率。本文将介绍一个 npm 包 sample-demo-migration,它可以帮助我们简单高效地...

    3 年前
  • npm 包 bob-react-slick 使用教程

    简介 bob-react-slick 是一款基于 React 的轮播组件库,提供了多种灵活的配置选项和效果展示,适用于各种前端项目中的轮播需求。 安装 通过 npm 安装 bob-react-slic...

    3 年前
  • npm 包 crypto-subreddits-cli 使用教程

    简介 crypto-subreddits-cli 是一款基于 npm 的命令行工具,能够帮助用户迅速访问纯属于加密货币行业的 Subreddits。 Subreddits 指的是 Reddit 上各种...

    3 年前
  • npm 包 gulp-video64 使用教程

    在前端开发中,我们经常需要对视频进行操作,比如压缩、转码、裁剪或者添加水印等等。而这些操作往往需要借助一些工具来完成。其中,gulp-video64 是一个很好用的 npm 包,它可以将视频转换成 b...

    3 年前
  • npm 包 promised-sns 使用教程

    简介 Promised-sns 是一个用于 Amazon Simple Notification Service (SNS) 的 Node.js 库,它提供了一些简单而有用的方法来方便地操作 SNS。

    3 年前
  • npm 包 schema2hapi 使用教程

    当你需要将一个 JSON Schema 转换成一个 Hapi.js 路由时,npm 包 schema2hapi 就能派上用场。该包将 JSON Schema 转换成一个 Hapi.js 路由插件并输出...

    3 年前
  • npm 包 @larpa/say-hi 使用教程

    什么是 npm 包? npm 是全球最大的软件包管理系统,包含了数百万个包,其中许多是由前端开发者开发的。这些包可以轻松的通过 npm 安装到我们的项目中,这样可以大大提高我们的开发效率。

    3 年前
  • npm 包 egg-frequency-limit 使用教程

    在现代 Web 应用中,频率限制是保持服务器安全的一个重要组件。频率限制能够帮助防止攻击者通过暴力攻击破解出用户的密码,并防止恶意软件在服务器上做出不当的操作。在 Egg.js 中,我们可以使用 np...

    3 年前
  • npm 包 egg-http 使用教程

    简介 egg-http 是一个基于 Egg.js 的 HTTP 客户端库,它可用于创建 HTTP 请求,也可用于对 HTTP 响应进行处理。在本文中,我们将说明如何使用 egg-http。

    3 年前

相关推荐

    暂无文章