我刚刚将Immutable.js合并到一个小的React / Redux + Typescript项目中,由于键入问题,我真的不确定这是否可行。我想听听更多有经验的程序员的意见。
Immutable.js的明显好处是,它可以使您的状态保持不变。
缺点是绝对缺乏打字能力。 getIn
和setIn
是与数据(尤其是商店的数据)进行交互的主要方式。嵌套得越多,它就会变得越痛苦和危险。而且,更改商店结构将不再产生任何错误-您将在整个项目中剩下成堆的setIn
吨,您需要查找并修复它们。重构变得异常危险。
我听过很多人称赞Immutable.js,但值得一提的是,由于缺乏打字而造成的所有痛苦吗?
有哪些替代解决方案?为什么/我不应该使用某种类型的库在每个reducer的开始处深度克隆状态?
答案 0 :(得分:1)
我不希望具有复杂的嵌套Redux状态。
在这里,您可以找到一篇文章,描述如何规范化数据结构:https://redux.js.org/recipes/structuring-reducers/normalizing-state-shape
请注意以下说明:
请注意,数据的结构有点复杂,有些 重复数据。这是出于以下几个原因引起的关注:
...
- 嵌套的数据意味着相应的化简器逻辑必须更嵌套,因此更加复杂。特别是,尝试更新深层嵌套的字段可能很快变得非常丑陋。
因此,在Redux存储中管理关系或嵌套数据的推荐方法是将存储的一部分视为数据库,并以规范化的形式保存。