React + Redux State 实现 - 2 个关联到同一个集合,但 1 个是另一个的子集
React + Redux State implementation - 2 associations to same collection, but 1 is a subset of the other
为了了解更多关于构建非平凡的 React 和 Redux 系统的信息,我正在实现一个玩具票务系统。
问题是我不确定构建 redux 状态的最惯用方法。
背景:
所有用户都已通过身份验证。
一部分用户可以作为受让人链接到工单,任何用户都可以订阅工单以接收更新。
在后端,ActiveRecord 定义看起来像这样:
class Tickets < ActiveRecord::Base
belongs_to :assignee, class_name: User
has_many :subscribers, class_name: User
end
工单的 ui 应显示受让人的 select 可能用户列表,以及类似于多 select 订阅者的列表。
问题:
我不确定是否:
- 我应该将一家公司的所有用户拉入一个单一的 redux 状态,然后在将用户列表传递给受让人下拉列表之前过滤用户属性
- 或者如果我应该让可分配用户和可订阅用户独立地从服务器获取并以不同的状态存储(它们是组合的,以及 maptoprops 等)
- 还是别的?
在 Redux 中处理关系实体的标准方法是将它们存储在 "normalized" 结构中,然后使用实体 ID 数组来指示排序、过滤等。对于您的情况,您通常会在你的状态下设置 Tickets 和 User "tables",对应你的后端。
我已经为您提供了有关此主题的一些阅读材料。首先,Redux FAQ 有一个总结handling relational data in Redux。
其次,Redux 文档有一个新的 Structuring Reducers 部分,其中提供了规范化 Redux 状态的示例以及供进一步阅读的资源。
第三,我强烈推荐一个名为 Redux-ORM 的库,它充当抽象层,用于管理商店内的规范化数据。
最后,实际上我几乎已经写完了一些博客文章,讨论了我为在实践中使用 Redux-ORM 而开发的概念和技术。我希望今晚在我的博客 (http://blog.isquaredsoftware.com) 上发布这些帖子。
编辑
更新:我已经在 Redux-ORM 上发布了这些帖子作为 a series on "Practical Redux" 的前几部分,讨论了我根据自己的 Redux 经验开发的技术。
为了了解更多关于构建非平凡的 React 和 Redux 系统的信息,我正在实现一个玩具票务系统。
问题是我不确定构建 redux 状态的最惯用方法。
背景:
所有用户都已通过身份验证。
一部分用户可以作为受让人链接到工单,任何用户都可以订阅工单以接收更新。
在后端,ActiveRecord 定义看起来像这样:
class Tickets < ActiveRecord::Base
belongs_to :assignee, class_name: User
has_many :subscribers, class_name: User
end
工单的 ui 应显示受让人的 select 可能用户列表,以及类似于多 select 订阅者的列表。
问题:
我不确定是否:
- 我应该将一家公司的所有用户拉入一个单一的 redux 状态,然后在将用户列表传递给受让人下拉列表之前过滤用户属性
- 或者如果我应该让可分配用户和可订阅用户独立地从服务器获取并以不同的状态存储(它们是组合的,以及 maptoprops 等)
- 还是别的?
在 Redux 中处理关系实体的标准方法是将它们存储在 "normalized" 结构中,然后使用实体 ID 数组来指示排序、过滤等。对于您的情况,您通常会在你的状态下设置 Tickets 和 User "tables",对应你的后端。
我已经为您提供了有关此主题的一些阅读材料。首先,Redux FAQ 有一个总结handling relational data in Redux。
其次,Redux 文档有一个新的 Structuring Reducers 部分,其中提供了规范化 Redux 状态的示例以及供进一步阅读的资源。
第三,我强烈推荐一个名为 Redux-ORM 的库,它充当抽象层,用于管理商店内的规范化数据。
最后,实际上我几乎已经写完了一些博客文章,讨论了我为在实践中使用 Redux-ORM 而开发的概念和技术。我希望今晚在我的博客 (http://blog.isquaredsoftware.com) 上发布这些帖子。
编辑
更新:我已经在 Redux-ORM 上发布了这些帖子作为 a series on "Practical Redux" 的前几部分,讨论了我根据自己的 Redux 经验开发的技术。