npm 包 arkhamjs-views-react 使用教程

简介

ArkhamJS 是一个轻量级的 React 状态管理库,而 arkhamjs-views-react 是在 ArkhamJS 基础上实现的视图层。它提供了一些高级特性,例如 React Hooks 和 Immutable.js,可以帮助你更容易的管理你的应用状态。

在这篇文章中,我们会详细介绍如何使用 arkhamjs-views-react 的组件来创建一个基本的 React 应用,并解释一些高级功能的使用,包括如何使用 ArkhamJS 的 middleware 和如何使用 Immutable.js 来保证状态不可变。

安装和使用

首先,我们需要安装 arkhamjs-views-react 和它的依赖项。你可以使用 npm 来安装它们:

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

在你的应用中,你需要引入 React、ReactDOM 和 arkhamjs-views-react:

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

现在让我们来创建一个简单的应用。

-- ------

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

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

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

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

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

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

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

在这个例子中,我们创建了一个简单的应用,有一个点击加1和减1的按钮,展示当前计数器的数值。我们还创建了一个包含两个方法的 action 对象,分别是 increment 和 decrement,他们用于改变计数器的状态。

这个应用的核心是 store 对象,它由 ArkhamJS 的 createStore 方法创建。传入该方法的参数是应用的初始状态和 actions 对象。

在 App 组件中,我们可以像普通的 React 组件一样使用该状态管理。我们利用 store.getState() 获取状态值,该方法会返回 state 对象,并展示在 UI 上。

我们也使用 store.dispatch() 方法来派发 actions,该方法需要传入两个参数:action 名称和 payload。Actions 接受这些参数并返回一个新的 state 对象。派发完成后,该状态将被应用于 UI。

最后,使用 ArkhamJSView 组件将应用和 store 集成在一起,让它们跨组件传递 store。这样,整个应用都经过了 ArkhamJS 包装,并且可以使用 store 对象进行状态管理。

你现在应该可以看到一个展示在页面上有一个计数器的 UI,并有两个按钮来增加或减少它。

基础应用

让我们进一步探讨如何使用 arkhamjs-views-react 开发应用。

如果你正在使用传统的 React,你的 componentDidMount 方法中很可能会拥有获取数据的逻辑。在 ArkhamJS 中,所有的状态管理是集中在 store 中的,你需要将获取数据的逻辑放到 actions 中,发起一个异步请求,请求完成后返回一个新的 state 对象。

这里是一个获取用户数据的例子:

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

此处,我们使用了一个 async 函数来获取数据,并将其作为 action 的返回值。在 UI 中,我们可以使用 store.getState().users 来获取用户列表。

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

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

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

useEffect 中传入一个空数组作为第二个参数,这是因为只有在组件挂载时该方法才会被调用一次。当请求完成后,我们设置 loading 状态为 false,此时用户列表会在 UI 中展示。

中间件

ArkhamJS 还提供了一些中间件的机制,它可以用来拦截 dispatch,同时进行一些额外的处理,这给予了我们更多的控制力以及扩展性。

每个中间件都是一个函数,它接收两个参数,store 和 next(下一个中间件或 store.dispatch())。中间件的核心目的是修改或拦截 action 的处理过程,例如:限制对某个特定对象的操作或根据条件指定不同的 reducer 等等。

例如,下面是一个简单的 logger 中间件:

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

在这个例子中,我们将 action 名称和参数都记录下来,以及更新后的状态。这可以帮助我们在开发和调试时理解整个 flux cycle 的执行过程。

要使中间件生效,你需要将它们传递给 createStore() 方法的第三个参数:

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

这样,在每个派发 action 的时候,就会经过 loggerMiddleware 中间件来处理它。

Immutable.js

另一个非常有用的技术是 Immutable.js,它是一个 JavaScript 库,可以用于创建不可变的对象。在 React 应用中,这是非常重要的,因为它可以确保状态不会被不小心地修改,因此避免了出现潜在的 bug。

Immutable.js 中有三种主要类型:List、Map 和 Set,它们都是不可变的,一旦创建后就不能再改变它们。同时,它们也都提供了一些常用的方法来帮助我们操作和访问其内容。

以下是一个简单的例子,使用 Immutable.js 的 Map 来保存一个用户的信息,当点击时进行更新:

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

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

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

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

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

这里,我们使用了 useState hook,它可以让我们在函数组件中使用状态。我们也使用了 user.set() 方法来更新 user 状态,后者将创建一个新的 Map 对象。

使用 Immutable.js,我们避免了因为错误地修改了状态而导致的不稳定问题,同时也不需要使用深度拷贝(deep cloning)方法,而且相较于其他不可变对象库,Immutable.js 更加完整更灵活一些。

结论

在本文中,我们学习了如何使用 arkham-views-react 包来帮助你更轻松地管理应用状态。我们还看到了如何使用一些 React 相关的概念,包括 useState 和 useEffect。

同时,我们也学习了一些高级特性,例如使用 ArkhamJS 的 middleware 和 Immutable.js 来保证状态不可变。

最后,你可以从这里下载相关源代码:GitHub 页面

希望本文能够对你有所帮助。如果有任何问题或建议,请随时在下方留言,谢谢!

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


猜你喜欢

  • npm 包 appivos-cli 使用教程

    介绍 appivos-cli 是一个基于 Node.js 的命令行工具,旨在提供方便快捷的方式来编写和打包 Web 应用。使用 appivos-cli 可以极大的提高前端开发效率并降低出错概率。

    3 年前
  • npm 包 face-recognition-models 使用教程

    最近,深度学习越来越受到前端开发者的重视,尤其是在人脸识别领域。在这个领域,npm 包 face-recognition-models 是一个非常好的开源工具,本文将详细介绍如何使用这个包,并给出一些...

    3 年前
  • npm 包 xenon-tslint 使用教程

    简介 xenon-tslint 是一个基于 TSLint 的插件,用于帮助前端开发者进行代码检查和规范。它可以检查 TypeScript 源码中的质量问题,例如常量重复定义、未使用的变量、继承的类中未...

    3 年前
  • npm 包 ngx-cli-library-mp2 使用教程

    介绍 ngx-cli-library-mp2 是一个基于 Angular 框架的轻量级开源前端库,它可以为开发者提供更加高效和便捷的组件开发体验。本文将介绍 ngx-cli-library-mp2 的...

    3 年前
  • NPM 包 jgrid 使用教程

    在前端开发中,数据表格是一种非常常见的组件。而 jgrid 就是一个在浏览器中使用的轻量级数据表格控件,它使用起来非常简单。本文将为您介绍 jgrid 的使用方法和注意事项。

    3 年前
  • npm 包 font-selector 使用教程

    在前端开发的过程中,选择合适的字体对页面的美观度和可阅读性起着至关重要的作用。而在实际开发过程中,我们往往需要浏览和使用不同的字体来确定最终采用方案。这时候,一个好用的 npm 包 font-sele...

    3 年前
  • npm 包 mui-simple-dialogs 使用教程

    简介 mui-simple-dialogs 是一个基于 Material-UI 的 React 组件库,用于创建简单易用的对话框。它包括了多种类型的对话框,如提示框、确认框、输入框等,可以方便地集成到...

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

    在前端开发中,随着数据量增加,我们需要使用一些高效的数据处理工具来加速数据的读取和查询。其中bloom filter就是一种高效的数据结构。而 npm 包 node-bloomfilter 提供了在 ...

    3 年前
  • npm 包 uas-get-my-keys 使用教程

    在前端开发中,我们经常需要操作对象的属性。而 uas-get-my-keys 是一个获取对象所有属性的 npm 包,可以帮助我们轻松地获取对象的所有键名,并避免手动枚举对象属性的繁琐操作。

    3 年前
  • npm 包 webpack-hashed-chunkids 使用教程

    简介 对于前端开发者来说,Webpack 是一个十分重要的工具。同时,随着应用程序的复杂度越来越高,Webpack 插件也越来越多。其中,webpack-hashed-chunkids 是一个十分有用...

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

    前言 随着互联网的迅速发展,前端开发越发复杂。为了提高开发效率,我们经常使用一些工具来辅助我们完成开发任务。其中,npm(node package manager)是前端工作中必不可少的一个工具,也是...

    3 年前
  • npm 包 btcnano-ecies 使用教程

    前言 在加密货币领域,比特币是最流行的加密货币之一。比特币使用椭圆曲线数字签名算法(ECDSA)进行加密和签名。而 ECIES(椭圆曲线秘密共享加密)是一种基于椭圆曲线密码体系的非对称加密算法。

    3 年前
  • npm 包 electron-redux-devtools 使用教程

    在前端开发中,Redux 是一个非常常用且强大的状态管理库。在使用 Redux 进行开发时,通常需要一个工具来方便地跟踪应用程序状态的变化和调试应用程序行为。在 Electron 应用程序中使用 Re...

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

    在 Node.js 开发中,我们可能遇到网络请求失败的情况。为了应对这种情况,有些人会写自己的重试逻辑,但这样会浪费很多时间。今天我们来介绍一个 npm 包 y9-node-retry,该包使用简单,...

    3 年前
  • npm包 @yjc/mysql使用教程

    1、什么是@yjc/mysql @yjc/mysql是一款基于Node.js的npm包,是一个MySQL数据库操作库,提供了丰富的数据查询和修改功能,可以帮助开发者更方便地进行数据库操作,提高开发效率...

    3 年前
  • npm 包 stljs-fixed 使用教程

    前言 在前端开发中,使用现有的工具和第三方库可以大大提高开发效率,加速项目进度。其中,npm 是前端工程师经常用到的包管理工具之一,它可以方便地安装、管理和升级第三方库。

    3 年前
  • npm 包 compress-assets 使用教程

    在前端开发中,我们通常会遇到一些需要压缩资源的情况,比如将 CSS、JS、图片等文件进行压缩,以减少页面加载时间和带宽消耗。而 npm 包 compress-assets 就是一款优秀的资源压缩工具,...

    3 年前
  • npm 包 jsui-revenant-ram 的使用教程

    介绍 jsui-revenant-ram 是一个前端开发工具,用于处理 JavaScript 的内存问题。它提供了一些实用的功能,包括内存释放、性能优化等。本教程将介绍如何使用这个工具,并提供一些示例...

    3 年前
  • npm 包 css-to-stylus-converter 使用教程

    在前端开发中,我们经常会使用 CSS 和 Stylus 这两种样式语言。但是,在不同的项目中,我们使用的语言也可能不同。有时候,我们需要将 CSS 转换为 Stylus,或者将 Stylus 转换为 ...

    3 年前
  • npm 包:live-cricket-scores 使用教程

    在前端开发中,我们经常需要使用外部依赖,而 npm 是一个十分流行的包管理工具。本文将介绍一款 npm 包:live-cricket-scores,它可以实现即时获取市场上的板球比分。

    3 年前

相关推荐

    暂无文章