转换实体/规范化响应

Transform entity / normalized response

我想知道在我的 Redux 状态中设置之前转换响应实体的好地方。

例子

问题

  1. 我是否在 getChatMessages 选择器 (reselect) 中计算这个新属性?
  2. 在我的状态下设置规范化响应之前,我是否计算这个新属性? – 因此我的问题 "Transform"
  3. 我只是在我的 Component 中计算它吗,但是这个(简单的)逻辑并没有在各处共享和复制...
  4. 我是否从服务器发送 unread 属性...

备注

解决方案取决于属性的使用方式:

  • unread 属性是否特定于一个组件以用于其渲染目的,而不用于其他任何地方。例如:通知点。如果是,那么您可以使用解决方案 3,因为您可以在组件内本地化使用。

  • 如果 unread 属性需要跨组件/中间件共享,将逻辑放在选择器/缩减器中是可行的方法。但是,如果您放置在减速器中,请询问是否所有订阅 chatBox 实体的组件都需要 unread。如果不是,那么最好将它放在一个选择器中,它只能由那些需要它的组件/中间件调用。有一个额外的运行时计算的权衡,但它提供了适当的关注点分离,因为如果将来有更多这样的派生属性,这最终会受益。

Normalizr 提供 processStrategy option:

Strategy to use when pre-processing the entity. Use this method to add extra data, defaults, and/or completely change the entity before normalization is complete.