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 包 zd-once 使用教程

    在前端开发中,我们常常需要使用一些工具库和插件,如何从众多的 npm 包中选择合适的包并正确使用,是每个前端开发者需要面对的问题。今天我们来介绍一个常用的 npm 包 zd-once 的使用教程。

    3 年前
  • npm 包 @litstack/service-starter 使用教程

    简介 @litstack/service-starter 是一款基于 NestJS 开发的,用于快速启动 Node.js 服务的脚手架工具,提供了一些常用的功能模块,例如请求日志记录、参数验证、异常处...

    3 年前
  • npm 包 excelservice 使用教程

    1. 简介 在前端开发中,经常需要对 Excel 文件进行操作,例如读取数据、导出数据等等。而 npm 包 excelservice 提供了便捷的 API,使得我们能够轻松地处理 Excel 文件。

    3 年前
  • npm 包 react-app-rewire-coffeescript-upgraded 使用教程

    在前端开发中,JavaScript 是最常用的语言之一。但是,对于一些开发者来说,他们可能更喜欢使用 CoffeeScript 这一语言来编写代码。在 React 开发中,react-app-rewi...

    3 年前
  • npm 包 react-native-vivekkiran-background-geolocation 使用教程

    React Native 是最近几年来备受瞩目的前端开发框架,它在前端开发方面带来了巨大的变革。而 react-native-vivekkiran-background-geolocation 是一个...

    3 年前
  • npm 包 require_all 使用教程

    在前端开发中,经常需要使用许多不同的 npm 包来提高开发效率和减少重复性工作。其中,常常用到 require_all 这个包来自动加载指定目录下的所有 js 文件并导出为一个对象。

    3 年前
  • npm 包 got-swag-delete 使用教程

    在前端开发过程中,我们经常需要访问和操作网络数据。这时,我们会使用一些 HTTP 请求库。其中,got 是一个功能强大的 HTTP 请求库,可以简单易用地实现各种网络请求。

    3 年前
  • npm 包 react-chat-window-more 使用教程

    前言 随着 Web 应用的发展,聊天室已经逐渐成为了 Web 应用中常见的功能之一。在构建聊天室时,我们通常需要使用一些 UI 库和工具来帮助我们快速搭建和展示聊天窗口。

    3 年前
  • npm 包 rf24js 使用教程

    简介 npm 是 node.js 的包管理工具,可以在其中找到各种类库和包,方便我们进行开发。而 rf24js 这个 npm 包是用于对 RF24 模块进行操作的类库。

    3 年前
  • npm 包 blocklancer.git 使用教程

    在前端的开发过程中,我们经常会用到别人已经写好的代码库,这时候就要依赖于 npm 包管理器。在这篇文章中,我们将介绍一个实用的 npm 包 blocklancer.git,它具有深度和学习意义,并包含...

    3 年前
  • npm 包 formatter-plus-plus 使用教程

    在前端开发中,代码格式化是一个非常重要的环节,良好的代码格式能够提高代码的可读性、可维护性,从而提高代码质量。而 npm 包 formatter-plus-plus 就是一款强大的前端代码格式化工具,...

    3 年前
  • npm 包 react-simple-drag-n-drop 使用教程

    简介 react-simple-drag-n-drop 是一个 React 组件,可以很方便地实现拖拽和放置的功能。它提供了简单的 API,可以支持不同类型的对象和容器之间的拖拽和放置操作。

    3 年前
  • npm 包 homebridge-powerview 使用教程

    前言 在智能家居领域中,智能窗帘无疑是居家生活的重要组成部分。而 Powerview Hub 便是 Hunter Douglas 推出的智能窗帘控制中枢,通过它我们可以轻松实现对窗帘的智能控制,本教程...

    3 年前
  • npm包 `mofron-comp-msgdlg` 使用教程

    什么是 mofron-comp-msgdlg? mofron-comp-msgdlg是一个基于mofron,一个JavaScript的前端框架,所创建出的一个对话框组件。

    3 年前
  • npm 包 xokit-test 使用教程

    简介 xokit-test 是一个基于 Node.js 平台的测试框架,它可以帮助前端开发者更简便、高效地进行单元测试。它不仅提供了一套完整且易于使用的测试工具集,而且还支持插件机制,开发者可以根据自...

    3 年前
  • npm 包 server-st 使用教程

    在前端开发中,我们往往需要开启一个本地的服务器来运行我们的应用程序。在 Node.js 中,我们可以使用 http 模块来创建一个服务器,但是这样做比较麻烦,还需要处理一些复杂的问题,比如路由、静态文...

    3 年前
  • npm 包 @oovui/react 使用教程

    在前端开发中,我们经常会使用各种开源工具和库来帮助我们实现更加高效和优秀的开发。而在这些工具和库中,npm 可以说是一个必不可少的工具。 Npm 是 Node.js 的包管理工具,不仅能够管理 Nod...

    3 年前
  • npm 包 reactbulma 使用教程

    什么是 reactbulma bulma 是一个基于 CSS 的简洁、灵活框架,使用它可以迅速构建漂亮、响应式的网站。而 reactbulma 则是一个基于 bulma 的 React 组件库,它使得...

    3 年前
  • npm 包 @wearejust/gtrack 使用教程

    在 Web 前端开发中,依赖管理工具是必不可少的。npm 是当前最流行的 Node.js 包管理器之一,具有丰富、高效、稳定的特点。在 npm 中,有许多优秀的包可供选择并使用。

    3 年前
  • npm 包 @wearejust/sticky 使用教程

    介绍 @wearejust/sticky 是一个基于 jQuery 开发的粘性导航插件,可以在页面滚动的过程中保持导航条在屏幕上方,让用户方便快捷地访问各个部分。 安装 使用以下命令进行安装: ---...

    3 年前

相关推荐

    暂无文章