npm 包 redux-typed-actions 使用教程

在前端的开发中,redux 是一个十分重要的状态管理工具。但是,在使用 redux 进行开发时,我们经常需要手动编写大量重复的模板代码,这很不方便。这时候,redux-typed-actions 这个 npm 包就可以帮我们解决这个问题,它提供了一个简单的、类型安全的方法来定义 redux action

安装

你可以使用 npm 命令来安装 redux-typed-actions

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

使用

使用 redux-typed-actions 可以大大简化 redux action 的创建过程,并且保证类型安全。接下来我们将通过一个简单的示例来演示如何使用它。

定义 action

在使用 redux-typed-actions 的时候,我们需要首先定义 action。我们可以通过 createStandardActioncreateCustomAction 来创建 action

createStandardAction

使用 createStandardAction 来创建标准的 action。标准的 action 中只包含一个 payload 字段。

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

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

在上面的示例中,我们创建了两个标准的 action,分别是 increasedecrease。它们都传入了一个 string 类型的参数作为 action type。由于这两个 action 都需要一个参数来表示增加或减少的数量,所以我们使用了泛型语法添加了一个 number 类型的参数。

createCustomAction

如果我们需要创建一个自定义的 action,可以使用 createCustomAction。在定义这种类型的 action 时,我们需要明确指定 payload 字段以及它的类型。

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

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

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

在上面的示例中,我们创建了两个自定义的 action,分别是 setNamesetAge。它们都传入了一个 string 类型的参数作为 action type。在定义 payload 时,我们传入了一个回调函数来生成它的值。这种方式使得我们可以根据需要创建比较复杂的 payload 类型。

使用 action

在定义 action 后,我们可以在 reduxreducer 中使用它。

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

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

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

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

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

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

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

在上面的示例中,我们首先定义了一个 Actions 类型来表示最终的 action 类型。我们使用 ActionType<typeof increase | typeof decrease | typeof setName | typeof setAge> 来定义它,这表示了我们可以使用 increasedecreasesetNamesetAge 这些 action

之后,我们定义了一个状态 State,包含了 countnameage 三个字段。我们使用了 Pick 类型来确保我们只使用了所需要的字段。

reducer 中,我们使用 getType 函数来获取 action type。这使得我们可以通过类型而不是字符串来引用 action

最后,我们使用 combineReducers 来组合我们的 reducer

Action 中间件

在使用 redux 进行开发时, redux-thunk 是一个十分常见且有用的中间件。而在使用 redux-typed-actions 时,我们可以使用 createStandardActioncreateCustomAction 的第二个可选参数来为 Action 的中间件提供更多的参数。

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

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

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

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

在上面的示例中,我们定义了一个 increaseAsync 函数,并使用了 ThunkAction 类型来指定了参数类型和返回类型。在 createStandardAction 中,我们传入了一个回调函数来生成 payload,这使得我们可以访问更多的参数,如 amount。这些参数可以在 Action 的中间件函数中被访问到。

总结

redux-typed-actions 提供了一种简单的方式来创建类型安全的 redux action,并且可以避免手动编写大量重复的模板代码。在这篇文章中,我们学习了如何使用 createStandardActioncreateCustomAction 来定义 Action。我们也演示了如何使用 Action 中间件来获取更多的参数,这使得我们可以使用 redux-typed-actions 来替代其他 redux 中间件。

让我们尝试将 redux-typed-actions 应用到我们的项目中,看看它能为我们带来多少便利吧。

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


猜你喜欢

  • npm 包 amqp-message-bus 使用教程

    前言 amqp-message-bus 是一个用于在前端应用程序中实现消息传递的 npm 包。它基于 AMQP (Advanced Message Queuing Protocol) 协议,提供了一种...

    3 年前
  • npm 包 node-red-contrib-fcc-decrypt 使用教程

    前言 在前端开发中,我们经常需要进行加解密操作,而其中 DES 算法则是常用的加密算法之一。为了方便使用,有很多开发者编写了相应的 npm 包供其他开发者使用。本文介绍的 node-red-contr...

    3 年前
  • npm 包 sass-respond-to 使用教程

    sass-respond-to 是一个非常有用的 npm 包,它可以轻松地帮助开发者根据不同的屏幕尺寸编写响应式样式。sass-respond-to 提供了一个简单的方法,使开发者可以根据 CSS 媒...

    3 年前
  • npm 包 agentstack-mongodb 使用教程

    在开发前端应用程序的过程中,使用 MongoDB 作为数据库的情况越来越常见。为了让前端开发者更加轻松地使用 MongoDB,社区开发者推出了 agentstack-mongodb 这个 npm 包。

    3 年前
  • npm 包 apaibot 使用教程

    概述 apaibot 是一个能够帮助前端工程师提高开发效率的 npm 包。它能够将自然语言转换成代码,从而让前端工程师更快、更准确地开发出所需的功能,让开发变得更加便捷。

    3 年前
  • npm 包 estree-assign-parent 使用教程

    前言 estree-assign-parent 是一个用于获取ES6+语法树(AST)的父级节点的 npm 包。该包可帮助开发者更轻松地分析代码以及进行语法分析与转换。

    3 年前
  • npm 包 Apibot 使用教程

    Apibot 是一款实现自动化 REST API 测试的 npm 包,通过自动模拟用户请求来确保应用/API 的可靠运行。本文将详细介绍 Apibot 的使用方法,帮助前端开发者更好地使用它。

    3 年前
  • npm 包 ionic4-mask-directive 使用教程

    在移动端开发中,有时需要对输入框进行输入限制,比如手机号、身份证等输入框需要有一定的格式限制。这时候,使用一个名为 ionic4-mask-directive 的 npm 包可以大大简化我们的开发工作...

    3 年前
  • npm 包 intersection-observer-util 使用教程

    Intersection Observer 是一种用于观察元素与其祖先(父母)元素或 viewport 可见区域交叉状态的 API。它可以跟踪元素是否刚刚进入或退出视图区域,或在当前视图区域内可见的情...

    3 年前
  • npm 包 @scotia/eslint-config-scotiabank 使用教程

    介绍 @scotia/eslint-config-scotiabank 是一款由 Scotiabank 开发的 ESLint 配置包,旨在帮助前端开发者规范化代码风格和提高代码质量。

    3 年前
  • npm 包 - Mars-ed 使用教程

    在前端开发中,我们经常需要使用到各种工具和框架。其中,npm 是一个非常重要的工具,它能够帮助我们管理和安装各种包。而 Mars-ed 是一个非常实用的 npm 包,它能够帮助我们在浏览器端绘制地球和...

    3 年前
  • npm 包 marscode 使用教程

    前言 在前端开发中,我们需要不断地优化自己的代码、提高生产效率。使用开源工具和 npm 包是一种很好的方式。这篇文章我将介绍一款 npm 包——marscode,它能够快速帮助我们生成常见的代码块,进...

    3 年前
  • npm包nrmlzd使用教程

    在前端开发中,我们常常需要使用一些基础的CSS样式,例如按钮、表格等;但是手写这些样式很耗费时间和精力。为了提高开发效率,我们可以搜索找到适合的CSS库或者使用已有的轻量级CSS npm包。

    3 年前
  • npm 包 opencadc-tap 使用教程

    简介 opencadc-tap 是一个用于检索天文图像数据的 npm 包。它使用 TAP(Table Access Protocol)协议作为数据检索协议,并支持各种数据集。

    3 年前
  • npm 包 Voibot 使用教程

    Voibot 是一个基于 Node.js 和 WebRTC 技术开发的实时语音交互机器人框架。它可以快速帮助开发者构建一个支持语音交互的应用程序,例如聊天机器人、语音识别、语音合成等等。

    3 年前
  • npm 包 iview-sincinfo 使用教程

    介绍 iview-sincinfo 是一个基于 iview 组件库的前端组件库,提供了一系列的 UI 组件,能够用于快速搭建中后台管理系统。这个组件库的主要特点是简单易用、灵活可扩展、UI 风格清新。

    3 年前
  • npm 包 jira-issue-finder 使用教程

    简介 jira-issue-finder 是一个使用 Node.js 编写的 npm 包,其主要用途是通过 Jira 的 REST API 获取指定条件的 Jira 任务(Issue)。

    3 年前
  • npm 包 node-asyncqueue 使用教程

    前言 在前端开发中,异步任务是必不可少的一部分,但是如何优雅地处理异步任务呢?本文介绍一款高效的异步任务处理库 node-asyncqueue,它可以帮助我们更好、更方便地管理异步任务。

    3 年前
  • npm 包 vmod 使用教程

    简介 vmod 是一个用于操作 HTML/CSS/JS 文件的模块化工具,可以将大型 Web 项目的各个部分拆分成一些小的,易于维护的组件。vmod 采用类似于 Vue.js 的组件化方式,提供了私有...

    3 年前
  • npm 包 grpc_php_plugin_prebuilt 使用教程

    简介 gRPC 是一款高性能、开源、通用的 RPC 框架,它由 Google 开发,支持多种编程语言。在 gRPC 中,通过定义服务,并生成不同语言的 stub,来实现跨网络的远程调用,因此具有很好的...

    3 年前

相关推荐

    暂无文章