首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将immutableJS与Normalizr集成

如何将immutableJS与Normalizr集成
EN

Stack Overflow用户
提问于 2018-01-16 16:00:00
回答 2查看 415关注 0票数 0

我们正在考虑在我们的项目中同时使用immutableJS和Normalizr,但是我们面临着许多挑战。

  1. 例如,当涉及到状态转换时,当来自服务器的Ajax响应到达时,我应该首先将响应转换为immutableJS(Record,List,Map),还是首先使用Normalizr执行Normalize
  2. 为了享受这些好处,我们决定使用immutableJS,但是应该在整个react项目中使用immutableJS数据形状(immutableJS(Record,List,Map)) (例如,Smart component&dumb component和其他props中的Redux & UI状态中的所有状态),还是仅仅在Redux中使用它就足够了,并且在react组件中仍然应该使用普通对象?
EN

回答 2

Stack Overflow用户

发布于 2018-01-16 16:29:41

我没有使用标准化,也没有使用immutableJS。但是,自我名称immutableJS是为了使数据不可变。

  1. 所以我认为你必须先标准化,然后再做immutableJS。
  2. 我认为您应该在整个项目中使用immutableJS,因为react状态变量应该是不可变的。
票数 0
EN

Stack Overflow用户

发布于 2018-05-07 20:14:26

我面临着同样的决定,在不变的之前,这似乎是正常的,但问题是

  1. 我可能会失去对normalizr函数的访问,特别是如果我想在不可变状态上执行类似linq或ramda的操作的话。
  2. 在某些时候,我可能必须始终使用禁止的.toJS,以便将数据返回到标准格式。

我相信,使用正常化第一方法,并且不必担心上述困境,事情仍然可以有效地完成,但这只意味着在这种情况下,正常化只是作为一个模式定义库使用。

你认为如何?

标准化第一方法这里的一个工作实例

===========================================================================

这就是我要做的

  1. 我建议您首先规范化,因为这样您就可以在您的状态中有一个准备好的/定义的数据形状。我不知道您的响应形状,但我总是建议,除非您有一个深度嵌套的数据或几乎没有模式的数据,否则就不会有任何规范化的需要。
  2. 一旦您决定将immutableJS注入到您的应用程序中,您就必须格外小心地将其限制在特定的范围内。我还建议您在redux状态和智能组件UI状态中对其进行限定。当涉及到您的哑组件时,您可能想要避免它,因为它们基本上是为了表示目的,很少或没有额外的逻辑。

PS:我有一个遗留项目,我正在尝试将ImmutableJS和normalizr集成到代码中,因为我的所有UI和redux状态都是纯JS对象,所以我决定将ImmutableJS形状插入到由combinedReducer管理的redux树中。这为我提供了一个具有不同还原器对象类型的单一还原状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48285282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档