npm 包 redux-shape 使用教程

前端开发中,状态管理对于应用程序的设计和复杂程度非常重要。在 React 应用程序中,Redux 是一个流行的状态管理工具。然而,Redux 自身不提供任何数据结构或核心结构。因此,我们需要使用 Redux 相关的 npm 包。其中一个优秀的 npm 包是 redux-shape。

redux-shape 是一个基于对象形状的 Reducer 帮助程序。其目标是简化 Redux 的初始设置并为状态多维数组中的复杂应用程序提供帮助。

这篇文章将向您展示如何使用 redux-shape、它的优点以及如何将它应用于您的应用程序。

安装

首先,我们需要使用 npm 安装 redux-shape:

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

然后,在您的应用程序中添加它:

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

接下来,您可以开始使用 redux-shape。

数据对象的形状

redux-shape 帮助程序的一个重要特性是对象形状。在需要处理多个重要状态的应用程序中,快速访问联机状态可能很有用。redux-shape 中,您可以使用对象形状自定义状态。

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

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

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

在这个示例中,我们使用用户验证行为创建一个 Reducer。每次登录成功或退出登录时都会分别调用 USER_AUTHENTICATED 和 USER_UNAUTHENTICATED。在状态更改中,我们使用前一状态和行为的负载进行简单合并。

使用组合

由于 redux-shape 帮助程序的对象形状和用于对象排序的“shape”概念,您可以轻松地进行组合。例如,您可以将多个 Reducer 组合在一起:

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

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

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

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

在这个示例中,我们创建了两个 Reducer:modalReducer 和 userReducer。在 combineReducers() 中,我们将它们组合在一个 Reducer 中。

如何使用 redux-shape

setup

首先,在您的应用的文件中导入依赖:

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

声明初始状态

现在,您声明应用程序的初始状态:

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

定义 action 类型

接下来,您要定义可以触发状态更改的所有操作。一个为 action 定义一个常量对于文档和清晰度非常有用:

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

创建 action

在应用程序中的组件上创建 action 函数。例如,这个函数会触发 SET_POST 操作:

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

请注意,我们稍后将在创建 Reducer 时使用 SET_POST 类型。

创建 Reducer

现在是创建 Reducer 的时候。在这个过程中,我们将使用 createReducer:

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

Reducer 是一个功能。每个 Reducer 都有一个类型,以用于处理与该类型关联的状态更改。在这个示例中,“SET_POST”表示更改 post 属性。

还要注意的重要事项是,只要在 Reducer 中返回一个新的状态实例,我们就可以使用“…”运算符合并先前的状态并添加新状态,而不必担心任何意外的状态突变。

创建 selector

在 redux-shape 中,selector 是一个函数,它从您的状态对象中检索有用的值。redux-shape 中的 createSelector 函数是一个高阶函数,它接受一个或多个 selector 作为输入并返回一个新的 selector。例如:

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

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

在这个示例中,我们创建了一个更具体的 selector,该 selector 返回一个用户给定“post ID”选择的所选后到它的所有评论的数组。

dispatching actions

在您的应用程序中,您可以使用 dispatch 函数将 action 提交到您的 store 中。例如:

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

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

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

在这个示例中,我们定义了一个将 post 发送到 store 的 setPostHandler 函数。

总结

在本文中,我们学习了如何使用 redux-shape 包帮助我们在 React 应用程序中管理状态。我们还学习了如何声明状态的初始形状、定义 action 和使用 Reducer 和 selectors。通过使用 redux-shape,我们可以更方便地创建应用程序状态管理逻辑。

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


猜你喜欢

  • npm 包 wct-headless 使用教程

    在前端开发中,我们经常需要进行单元测试来保证代码质量和稳定性。wct-headless 是一个 npm 包,它可以让我们在无界面的浏览器环境中进行 Web 组件测试。

    3 年前
  • NPM 包 Vuex2VueX 使用教程

    在前端开发中,我们经常使用各种工具来提高开发效率和代码可维护性。其中,状态管理工具是非常重要的一种。Vuex2VueX 是 Vue.js 的状态管理库,它提供了一种集中式存储管理应用程序所有组件的状态...

    3 年前
  • npm 包 bst-lib 使用教程

    什么是 npm 包 bst-lib npm (Node Package Manager)是世界上最大的软件仓库之一,其中包含了各种各样的包,用于前端和后端开发。在这个仓库中,有一个叫做 bst-lib...

    3 年前
  • npm包ppcase-widget使用教程

    什么是PPCase? PPCase是一个专业的码农社区,旨在为开发者提供最新的技术资讯、交流、分享和求助,并提供代码托管、应用市场等优质服务。PPCase致力于成为中文开发者的信仰。

    3 年前
  • npm 包 @babyeyefe/localstorage 使用教程

    前言 在前端开发中,我们经常需要使用浏览器本地存储,而 LocalStorage 是其中一种比较常用且方便的方式。然而,官方提供的 LocalStorage API 的使用方式有些繁琐和不便,因此一些...

    3 年前
  • npm 包 filstem 使用教程

    简介 filstem 是一个用于文件系统操作的 Node.js 模块,它提供了一系列非常方便的方法来处理文件和目录,比如读取、创建、修改、删除、重命名等。使用 filstem 可以帮助我们更加高效地编...

    3 年前
  • npm 包 @kingjs/descriptor.object.clone 使用教程

    在前端开发中,我们经常需要操作对象数据,例如复制一个对象。但是 JavaScript 中对象是引用类型,直接复制会导致原对象和复制后的对象共用同一块内存,修改一个对象会影响到另一个对象。

    3 年前
  • npm包@kingjs/descriptor.object.writable-symbol使用教程

    前言 随着前端技术的不断发展,越来越多的开发者开始使用各种工具和库来提高自己的工作效率,其中npm包@kingjs/descriptor.object.writable-symbol就是一款非常优秀的...

    3 年前
  • npm 包 @kingjs/descriptor.writable-symbol 使用教程

    简介 @kingjs/descriptor.writable-symbol 是一个 npm 包,它提供了一种方便的方法来创建可写的 Symbol。这可以非常有用,例如在创建对象时创建一个纯粹的数据描述...

    3 年前
  • npm 包 `generator-node-module-ts` 使用教程

    导语 当你在进行 Node.js 开发时,难免会涉及到创建 npm 包。而在创建的过程中,我们根据业务需求需要编写不同的代码,而这些代码可能会被用于多个项目中,因此,我们需要一种工具来帮助我们快速创建...

    3 年前
  • npm 包 @thematter_io/plasma.js 使用教程

    前言 随着前端技术的不断发展,现代前端开发越来越复杂,需要使用各种工具和框架来提高开发效率。其中,npm(Node Package Manager),是一个非常重要的工具,可以方便地下载并安装我们需要...

    3 年前
  • npm包 nvcli使用教程

    Nvcli 是一个基于命令行的工具,它可以对npm仓库进行查询,让我们能够更快捷地查询和安装npm包,而不需要去网页进行搜索和下载。 在本文中,我们将介绍如何安装和使用nvcli,并提供几个关于其实用...

    3 年前
  • npm 包 vue-co-dialog 使用教程

    在前端开发中,经常需要使用到弹窗功能。而 vue-co-dialog 是一个方便易用的 npm 包,可以帮助我们快速实现各种类型的弹窗。该 npm 包提供了丰富的选项和功能,可以满足大部分的业务需求。

    3 年前
  • npm 包 @kingjs/descriptor.is-frozen 使用教程

    如今前端开发中,我们经常需要用到对象。而对象可以包含若干个属性,这些属性都可以单独进行访问和修改。但是,由于 JavaScript 是一门动态语言,属性的新增和修改并没有受到限制,所以对象的属性会变得...

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

    什么是 elmish-ts elmish-ts 是一个 JavaScript 库,它提供了一个用于构建在架构上工作的应用程序的模型,以及减少了在应用程序中出现的错误数量的 API。

    3 年前
  • npm 包 @kingjs/descriptor.clone 使用教程

    在前端开发过程中,经常会遇到需要对 JavaScript 对象进行深度克隆的情况。而 npm 包 @kingjs/descriptor.clone 就是一款很好的解决方案。

    3 年前
  • npm 包 express-body-trimmer 使用教程

    在开发前端应用的过程中,我们通常需要使用 Node.js 和 Express 框架来搭建后端服务器。然而,请求体中传递的数据往往是非常混乱和冗长的,这就需要我们对传入的数据进行处理。

    3 年前
  • npm 包 js-avl-tree 使用教程

    在前端开发中,使用数据结构是一个很常见的需求。而 AVL 树是一种自平衡二叉搜索树,是一种比较常用的数据结构。在 JavaScript 中,使用 npm 包 js-avl-tree 可以方便地实现 A...

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

    前言 在前端开发过程中,我们经常需要管理多个项目,针对这一情况,npm 包 project-watcher 提供了一种监视多个项目并自动执行任务的解决方案。本文将详细介绍该 npm 包的使用方法和注意...

    3 年前
  • npm 包 @orcden/od-toolbar 使用教程

    介绍 @orcden/od-toolbar 是一个基于 React 的可定制化工具栏组件。它可以帮助前端开发者快速搭建工具栏,同时支持自定义样式和事件处理函数。 安装 你可以通过以下命令安装 @orc...

    3 年前

相关推荐

    暂无文章