我正在建立一种社交网络,用户可以互相关注,但是我不知道哪种方法是在Redux中存储用户关注用户关系的最佳方法,我基本上有2种方法,其中一种是好吗?我还将针对“取消关注”按钮实施实时更新,
entities : {
usersById : {
userId : {
isFollowedByMe : true/false
}
}
}
或完整的其他地图
entities : {
usersById : {
/* */
}
},
relationships : {
userFollowMap : {
targetUserId : true,
anotherTargetUserId : false,
}
}
服务器也归我所有,因此我可以毫无问题地以标准化形式将数据发送给客户端吗?
答案 0 :(得分:0)
Redux不会强制您使用规范化形式。这个问题远远超出了redux。
选择正确的模式始终是规范化和优化之间的权衡,并且在很大程度上取决于您要实现的特定功能。
如果您只想显示应用程序的当前用户是否跟随屏幕上显示的用户,则第一种方法很好。但是也许您也想在另一页上显示所有关注的用户,如果是这种情况,那么您提出的两种实现方式都不利于此,因为它们要求您过滤所有用户的数组才能获得关注的用户。并且在这种情况下,您希望拥有一个followedByMe
数组,其中包含所有用户ID,然后是您。
但是,由于存储在redux中的数据与应用程序共享生命周期,因此与持久存储(例如数据库)中的数据相比,您的敏捷性要大得多。您可以同时使用isFollowedByMe
字段和followedByMe
列表来有效地实现这两个功能。而且,前端对于重构和更改更加耐用。这使您能够以低成本进行实验。因此,您可以使用某些架构,如果在某些时候它不适合您的需求,则可以进行重构,而无需进行任何迁移和填充。因此,不要害怕现在使用适合您的东西。
但是不要对后端和数据库架构使用相同的方法,它们很难重构。