简介
my-normalizr-immutable
是一个基于 normalizr
和 immutable
库的 npm 包,在前端开发中用于对数据进行归一化处理和不可变数据的操作。
在复杂的应用程序中,数据可能存在多个嵌套层级,但是前端组件仅处理其中的一部分数据,这时就需要用到数据归一化来避免数据重复,从而提高应用性能。同时,为了避免数据被误操作,使用不可变数据也是一个很好的选择。
安装
在项目中使用 npm
命令安装 my-normalizr-immutable
:
--- ------- ----------------------
使用
以下是一些常见的使用场景:
数据归一化
normalizeData
函数接受两个参数,第一个参数为待归一化的数据数组,第二个参数为 schema
,表示规范化数据的规则。schema
规定了数据结构需要满足哪些条件,从而于 normalizeData
中进行过滤、排序、分组和归一化等操作,以生成符合规则的结构化数据。
------ ------------- ---- ------------------------- ----- ---- - -- --- -- ----- --- -- - --- -- ----- --- --- ----- ---------- - --- ----------------------- ----- -------------- - ------------------- -------------- ---------------------------- -- - --------- - ------ - ---- - --- -- ----- --- -- ---- - --- -- ----- --- - - -- ------- --- -- -
不可变数据
在使用 immutable
数据库之前,需要先引入 I
模块:
------ - - - ---- -------------------------
在处理数据时,我们需要保证一旦数据被改变,就不能直接修改源数据。这时,我们就可以使用 I
模块中的 fromJS()
方法将原始数据转换成不可变数据,然后再进行修改操作。
------ - - - ---- ------------------------- ----- ---- - - -- - -- - -- - - - -- ----- ------------- - --------------- ----- ------- - ------------------------- ---- ----- --- ------------------------------------- ---- ------- -- - ------------------------------- ---- ------- -- -
扩展 schema 规则
使用 my-normalizr-immutable
包来定义 normalize()
的 schema 规则时,我们还可以自定义规则。以下示例展示了如何定义一个支持用户关联评论的 schema 规则:
------ - ------ - ---- ------------ ------ - ----- --- - ---- ------------ ----- ------- - --- ------------------------- ----- ---- - --- --------------------- - --------- --- -------------- --- ------------- --------- --- --------------------- - ---------------- ------- ------- ---- -- - ------ ------------------------- ------ -- - ------ ------------------------- ------- --- -- --- --- ----- -------------- - ------------------- --------
在上面的示例中,我们定义了一个 comments
的属性,该属性将被转换成一个包含 index
属性的 Map
数据类型。
将数据恢复为纯值
使用 my-normalizr-immutable
的 toJS()
方法可以将不可变数据恢复为纯值。下面是一个使用示例:
------ - - - ---- ------------------------- ----- ------------- - ---------- -- - -- - -- - - - --- ----- --------- - --------------------- ----------------------- -- - -- - -- - -- - - - -
结语
my-normalizr-immutable
包为前端工程师提供了一个灵活且高效的数据处理方案。在使用这个包时,请务必详细阅读文档,按照文档中的指引来编写代码。祝大家使用愉快。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005584381e8991b448d5798