npm 包- redux-action-side-effects 使用教程

引言

在前端开发中,状态管理是一个非常重要的方面,redux 是 React 生态圈中最火的状态管理库之一,但是 redux 操作副作用需要使用 redux-thunk 或 redux-saga 等中间件实现。

而 redux-action-side-effects 则是一个非常好用的 npm 包,可以让开发者轻松实现 redux 异步操作和较为复杂的状态管理,本文将对这个非常优秀的 npm 包进行详细的介绍和使用指导。

什么是 redux-action-side-effects

redux-action-side-effects 是一个简单易用的 redux 状态管理库和 redux 中间件,可以帮助开发者简化异步操作和副作用管理的流程。

redux-action-side-effects 实现了 redux 中间件的 API ,能够拦截 redux 的 action,并且在拦截到之后执行相应的副作用操作。

使用 redux-action-side-effects ,可以通过配置单个 action 处理其所需的所有状态、异步操作和副作用,从而简化项目中的管道。

redux-action-side-effects 的安装

使用 npm 或 yarn 进行安装

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

或者

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

redux-action-side-effects 基本使用方式

使用 redux-action-side-effects ,需要在创建 store 时将其作为 middleware 添加到 createStore 方法中。

示例代码如下:

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

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

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

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

配置 redux-action-side-effects

在使用 redux-action-side-effects 时,需要为其提供一个配置项,这个配置项中包括了所需的所有状态、异步操作和副作用代码。

下面我们来看一段代码来理解如何配置 redux-action-side-effects :

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

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

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

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

上面的代码中,我们定义了一个名为 mySideEffect 的副作用,然后将其添加到了 TConfig 对象中。

TConfig 是 redux-action-side-effects 的一个类型,它是一个包含 actionType 、 handler 和 sideEffect 等的对象,其中:

  • actionType:表示所有与该配置相关联的 action 的 type;
  • handler:处理由 Redux 触发的 action 类型的 reducer 函数;
  • sideEffect:在触发 action 时将执行的副作用函数。

除了上面所介绍的三个属性外, TConfig 还包括以下一些其他的属性:

  • getState:获取整个 Redux Store 上的状态;
  • getConfig:用于执行前向值推进和获取 store-level 数据;
  • hooks:在不同的时间处于执行管理中的回调函数列表,如 before、after、onSuccess、onError 等;
  • cacheStrategy:定义 action 需要使用的缓存策略。

回到这个例子,我们可以看到,我们在配置中定义了一个名为 config 的对象,它是一个 TConfig 的实例。config 中的 mySideEffect 会在 myAction 触发时被执行。

示例代码

下面我们来看一个稍微复杂一点的示例,演示如何在一个 redux 项目中使用 redux-action-side-effects 。

Redux store 的核心代码如下:

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

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

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

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

创建 action 和定义 reducer

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

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

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

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

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

定义副作用函数

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

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

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

在这个例子中,我们将异步操作和等待结果的行为分离了出来,让我们轻松地处理副作用,无需关心异步操作细节,让 UI 控件专注于与用户的交互。

结论

redux-action-side-effects 是一个非常棒的 npm 包,它可以帮助我们更方便地进行 redux 状态管理和异步操作,同时也能帮助我们更好地管理副作用。

首先,使用它帮助我们使特定的 action 的 reducer 和相关的副作用函数更明确和紧密耦合,让我们可以更好地管理 redux store,同时也会更简单,因为没有额外的配置过程。

其次,它允许我们开发更干净和可维护的代码,在避免代码混乱和新手错误方面也很有帮助。由于 redux-action-side-effects 使用 redux-saga 作为引擎,因此它充分利用了 redux-devtools、测试代码等 react 生态圈中的许多特性。

如果您是一个 React 工程师或前端开发者,并且正在寻找一个更好的状态管理方案,那么 redux-action-side-effects 是值得考虑的一个选项。它是一个功能强大但灵活的库,可以帮助您更好地管理 React 应用程序中的状态和异步操作。

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


猜你喜欢

  • 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 年前
  • npm 包 redux-virtual-dom 使用教程

    概述 redux-virtual-dom 是一个基于 React 和 Redux 的前端开发库,专注于高效地处理大量数据和高频更新。它使用了虚拟 DOM 技术,将数据的修改映射到虚拟 DOM 上,通过...

    4 年前
  • 使用 redux-vixus-store:让 Redux 的状态管理更加优雅

    Redux 是目前前端状态管理中最受欢迎的方案之一,但是它的 API 和工作流却让许多开发者感到繁琐和复杂。redux-vixus-store 是一个 npm 包,它简化了 Redux 的使用过程,让...

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

    前言 随着前端技术的不断发展,单页面应用(SPA)的使用越来越广泛。然而,随之带来的路由管理问题也日益突出。因此,前端社区不断推出各种路由管理方案。其中,Redux 中间件的路由方案 redux-vs...

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

    在前端开发过程中,状态管理是一项十分重要的任务。Redux 作为一个可预测性容器、状态管理库,被广泛应用于前端开发中。redux-waitfor-middleware 是 Redux 中的一个中间件,...

    4 年前
  • npm包-regexp-events使用教程

    在前端开发过程中,处理字符串时经常需要用到正则表达式,而在某些情况下需要在字符串中匹配多个正则表达式,或者通过正则表达式来定制字符串处理的逻辑。在这样的情况下,使用npm包-regexp-events...

    4 年前
  • npm 包 regexp-hash-router 使用教程

    介绍 regexp-hash-router 是一款基于 regexp 和 hash 的前端路由库,支持通过正则匹配路由和参数。它可以帮助我们快速构建单页应用程序,并且具有良好的性能和可维护性。

    4 年前
  • npm 包 regexp-id 使用教程

    npm 包 regexp-id 使用教程 regexp-id 是一款基于正则表达式的工具包,可以帮助前端开发者处理字符串中的身份证号码。它是一个轻量级的 npm 包,提供了丰富的 API 简化了身份证...

    4 年前
  • npm 包 regexp-inverse 使用教程

    正则表达式是前端开发中十分常用的一种技术,它可以帮助我们处理字符串、过滤数据等。但是,有时候我们需要匹配的不是某种特定的字符串,而是某种特定字符串之外的所有字符串。

    4 年前
  • npm 包 regexp-lexer 使用教程

    在前端开发中,常常会涉及到字符串的处理和匹配。而正则表达式则是处理字符串的一种强有力的工具。而要使用正则表达式,我们需要使用一个解析器来将正则表达式解析成可使用的语法树。

    4 年前
  • npm 包 regexp-js-minificator 使用教程

    正则表达式是前端开发时经常使用的一种字符串处理方法。但是,由于其长而复杂的字符串表达式,阅读和调试起来都比较繁琐。为了解决这个问题,我们可以使用 npm 包 regexp-js-minificator...

    4 年前
  • npm 包 reesource 使用教程

    Npm 是一个前端开发必不可少的工具。而 reesource 则是 npm 包中一个重要的模块。通过这个模块,你可以更加轻松地完成前端开发的各种任务。 reesource 简介 reesource 本...

    4 年前
  • npm 包 regexp-input 使用教程

    在前端开发中,正则表达式是一项非常重要的技术,可以用于字符串的匹配、替换、切割等操作。在处理表单输入时,有时需要对输入进行正则校验,这时候就可以使用 npm 包 regexp-input。

    4 年前
  • npm包reevoo-lego使用教程

    简介 reevoo-lego是一个前端开发的npm包,通过使用它可以快速搭建具有良好扩展性的UI组件库。在该包的背后,它使用了React和Webpack,可以方便地拓展和集成,且其提供的UI组件丰富且...

    4 年前

相关推荐

    暂无文章