npm 包 immutable-trees 使用教程

什么是 immutable-trees

immutable-trees 是一个基于 Immutable.js 打造的可持久化数结构工具包。它提供了对包括 Map、List、Set、Record 和 Seq 在内的数结构的创建、读取、更新等操作。它的使用方法简单、易于理解,可以大幅度提高 JavaScript 代码的可读性、可维护性。本文将详细介绍 immutable-trees 的使用方法和使用场景。

安装

我们首先需要使用 npm 安装 immutable-trees:

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

使用场景

Redux

在 Redux 中,state 是单一对象存储的,每一次的修改都需要深拷贝一份,然后再返回给 store。这样做的原因是如果直接去修改原有的 state,那么所有的订阅都会被激发,导致不必要的渲染。而 immutable-trees 提供了一种更简洁且效率更高的解决方案。

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

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

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

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

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

React

在 React 中,由于 this.setState() 方法只能用于 class 组件,并且没有提供深比较的功能,因此我们需要手动对 state 进行深比较操作。而 immutable-trees 提供了与 React 集成的解决方案,并大大提高了效率。在组件中,我们通常可以将组件的 state 和 props 转换成 immutable 对象,然后配合 shouldComponentUpdate 进行深度比较。

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

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

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

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

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

immutable-trees API

Map

Map 是 immutable-trees 中最常用的一种数结构。它类似于 JavaScript 中的 Object,但是它的 key 可以是任何类型而不只是字符串。Map 中的值可以通过 setIn() 方法进行设置,并且该方法会返回一个新的 Map。我们可以通过 getIn() 方法获取存储在 Map 中的值。另外,Map 的大小可以通过 size 属性来获取。

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

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

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

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

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

List

List 是 immutable-trees 这个库提供的另一中数结构,它类似于 JavaScript 中的 Array。List 中的值可以通过 setIn() 方法进行设置,并且该方法也会返回一个新的 List。我们可以通过 getIn() 方法获取存储在 List 中的值,List 的大小可以通过 size 属性来获取。与普通的数组不同的是,List 会提供一些自带的方法,例如 push()、pop() 和 shift() 等。

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

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

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

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

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

Set

Set 也是 immutable-trees 提供的一种数结构,顾名思义,Set 存储的值必须是唯一的。Set 中的值可以通过 add() 方法进行添加,并且该方法也会返回一个新的 Set。我们可以通过 has() 方法来判断一个值是否在 Set 中,Set 的大小可以通过 size 属性来获取。

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

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

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

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

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

Record

Record 可以让我们快速创建一种新的自定义数结构。我们可以使用 Record() 方法来创建一个自己的数结构,并定义默认值。

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

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

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

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

Seq

Seq 是一种有趣的应用,它可以针对某个 Collection 对象创造一个惰性操作序列,避免执行多余的数组遍历。

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

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

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

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

总结

immutable-trees 是值得推广和使用的一种数结构工具包,它可以大大提高代码的可读性和可维护性,避免了意外的修改,从而减轻了代码测试的负担。本文对 immutable-trees 的使用方法进行了详细的介绍,并提供了使用场景和 API 支持。对于需要使用该库的开发者,希望本文提供了一些参考和指导。

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


猜你喜欢

  • npm 包 koa-jwt-wong 使用教程

    简介 koa-jwt-wong 是一个基于 Koa2 和 jsonwebtoken 的 JWT(JSON Web Token)中间件。它提供了一种简单方便的方式来验证和解析 JWT,以保护你的应用程序...

    3 年前
  • npm 包 aws-simpledb-query-builder 使用教程

    前言 随着云计算技术的快速发展,AWS 等云服务商的云产品越来越受到开发者们的关注。在云产品使用过程中,查询数据是非常常见的需求。AWS SimpleDB 是一款由 Amazon 提供的 NoSQL ...

    3 年前
  • npm 包 ufile-rest 使用教程

    简介 ufile-rest 是一个基于 Node.js 环境下的 npm 包,用于操作优刻得 (UCloud) 对象存储 (UFile) 的 RESTful API 接口。

    3 年前
  • npm 包 baptz 使用教程

    前言 npm 是 Node.js 的包管理器,可以方便地管理前端项目中所需的依赖库。而在这些库中,baptz 是一个非常实用的工具包,可以让我们快速进行基于 Bootstrap 的响应式布局。

    3 年前
  • npm 包 react-native-btns 使用教程

    #npm 包 react-native-btns 使用教程 ##介绍 React Native Btns 是一个用于 React Native 应用程序的按钮库。它提供了许多常见的按钮样式,可以在应用...

    3 年前
  • npm包d3actpub的使用教程

    前言 在前端开发的过程中,数据的可视化是一个非常重要的部分。而d3.js这个强大的JavaScript库可以帮助开发者实现各种各样的可视化效果。不过如果想要在React中使用d3.js,我们需要处理一...

    3 年前
  • npm 包 gulp-pdc 使用教程

    在前端开发中,自动化工具已经变得不可或缺,其中最流行的应该就是 Gulp 了。而 gulp-pdc 则是 Gulp 的插件之一,可以帮助我们对 pdc 文件进行处理。

    3 年前
  • npm 包 @dharmesh-hemaram/jutils 使用教程

    简介 在前端开发中,我们经常需要使用一些工具或者库来帮助我们完成一些任务,比如说操作日期、字符串格式化等,这些功能可以使用已经开发好的库来完成,而 npm 就是最大的 node.js 模块仓库,是前端...

    3 年前
  • npm 包 feathers-rethinkdb-jkr3 使用教程

    简介 本教程主要介绍了如何使用 npm 包 feathers-rethinkdb-jkr3 在前端开发中和 RethinkDB 进行数据交互,并提供了一些示例代码供读者参考。

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

    简介 在开发前端项目时,我们经常需要使用一个本地的 http 服务器来快速预览和测试项目。koa-http-server 是一个基于 koa 的 http 服务器,可以满足我们的需求。

    3 年前
  • npm 包 openiban 使用教程

    如果你正在开发基于国际银行账号标准的应用,那么你可能需要使用 openiban 这个 npm 包。这个包可以用来校验、解析和格式化国际银行账号。 本文将详细介绍 npm 包 openiban 的使用方...

    3 年前
  • npm 包 postcss-comment-2 使用教程

    在前端开发中,CSS 是一个非常重要的部分。其中,PostCSS 是一个非常流行的工具,可以对 CSS 进行预处理和后处理。而 postcss-comment-2 则是一个 PostCSS 插件,主要...

    3 年前
  • npm 包 webpack-plugin-hash 使用教程

    webpack-plugin-hash 是一个用于 Webpack 构建项目时自动添加 hash 值的插件,可以帮助我们进行资源缓存与版本管理。在前端开发中,使用缓存可以加速网页加载,并缩短用户等待时...

    3 年前
  • npm 包 bower-consolidator 使用教程

    前言 在使用前端框架和库时,我们常常需要使用到众多的第三方模块和插件。使用 bower 是一种很方便的方式进行前端依赖管理的方法,但是在使用过程中,可能会遇到依赖冲突、依赖版本不一致等问题,导致程序的...

    3 年前
  • npm 包 bossco 使用教程

    简介 在前端开发中,项目的构建和管理是必不可少的环节,而 npm 是目前最流行的 JavaScript 包管理器之一,其中包含了众多实用的工具和库。 bossco 是一款基于 npm 的构建工具,可以...

    3 年前
  • npm 包 meetup-token 使用教程

    简介 在现代 web 开发中,前端技术已经成为不可或缺的一部分。其中,npm 包管理工具简化了前端项目的依赖管理,让前端开发变得更加高效。 meetup-token 是一款 npm 包,用于生成 Me...

    3 年前
  • npm 包 octoprint 使用教程

    Octoprint 是一款针对 3D 打印机的开源 Web 服务器软件,它可以通过 web 界面来控制和监控 3D 打印机。而 npm 包 octoprint 则是针对 Octoprint API 的...

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

    在前端开发中,我们经常需要对字符串进行匹配和搜索,如何用高效的方式实现这种功能是一个值得探讨的主题。在此,我们将介绍一种基于前缀树(Trie)实现字符串搜索的 npm 包 trie-js。

    3 年前
  • npm 包 beginpm-template 使用教程

    前言 在进行前端开发时,我们经常会需要使用第三方库来加快开发的效率,而 npm 则是前端领域内最常用的包管理工具之一。在使用 npm 包时,我们可以通过像 npm install jquery --s...

    3 年前
  • npm 包 cross-multiply 使用教程

    在前端开发中,我们经常需要对数组或对象进行运算或变换。这时,cross-multiply 这个 npm 包就可以提供帮助。它可以快速且灵活地对数组或对象进行交叉相乘,使得我们可以省去其他方法的繁琐步骤...

    3 年前

相关推荐

    暂无文章