react有必要用normalizr进行数据规格化吗?感觉不用也能进行数据的修改,没啥问题。我平时都用lodash的assign和merge进行合并,state = _.merge({},state,{...}},感觉多复杂的嵌套都能没问题,用了normalizr感觉复杂了?
react有必要用normalizr进行数据规格化吗?感觉不用也能进行数据的修改,没啥问题。我平时都用lodash的assign和merge进行合并,state = _.merge({},state,{...}},感觉多复杂的嵌套都能没问题,用了normalizr感觉复杂了?
不存在一定要用的说法,normalizr的很重要的一个作用就是把杂糅在一起的对象分开,变的更加清晰。
比如下面这样这两段json,同样是获取一篇文章的数据
没有normalizr
{
"id": "123",
"author": {
"id": "1",
"name": "Paul"
},
"title": "My awesome blog post",
"comments": [
{
"id": "324",
"commenter": {
"id": "1",
"name": "Paul"
}
}
]
}
有normalizr
{
result: "123",
entities: {
"articles": {
"123": {
id: "123",
author: "1",
title: "My awesome blog post",
comments: [ "324" ]
}
},
"users": {
"1": { "id": "1", "name": "Paul" }
},
"comments": {
"324": { id: "324", "commenter": "1" }
}
}
}
是不是各个对象都清晰的区分开了?也用引用的方式去除了重复数据,例如user:Paul
离开业务逻辑谈架构都是耍流氓,用不用normalizr要看你的store设计模式能不能支撑目前的业务逻辑以及未来的功能扩充。大部分(可能仅是我认为的大部分)前端项目是后台提供数据,前端做数据展示,基本用不上normalizr。但是部分项目,比如电路图编辑器(《领域驱动设计 软件核心复杂性应对之道》作者就曾经用这类项目举例),需要前端做建模,设计类图。这种项目里面有大量的类和对象(这些类和对象都是前端处理),这时候我们其实想要一个前端关系型数据库,而且还得能放进redux里面,该数据库要有索引(加快查询速度),符合数据库范式(增删改查数据不会产生副作用)。此时,normalizr就需要使用了
1 回答1.7k 阅读✓ 已解决
4 回答1.7k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答1.6k 阅读✓ 已解决
4 回答1.4k 阅读
1 回答1.6k 阅读✓ 已解决
没有一定必要,如果目前用的顺手就可以了。
normalizr库是在复杂的JSON格式巢状数据模型场合使用的。