以标准化形式在Redux中存储用户关注关系的最佳方法是什么?

时间:2018-09-20 09:57:55

标签: reactjs redux react-redux

我正在建立一种社交网络,用户可以互相关注,但是我不知道哪种方法是在Redux中存储用户关注用户关系的最佳方法,我基本上有2种方法,其中一种是好吗?我还将针对“取消关注”按钮实施实时更新,

entities : {
    usersById : {
        userId : {
             isFollowedByMe : true/false
         }
    }
}

或完整的其他地图

entities : {
    usersById : {
        /*   */
    } 
},
relationships : {
    userFollowMap : {
        targetUserId : true,
        anotherTargetUserId : false,
    }
}

服务器也归我所有,因此我可以毫无问题地以标准化形式将数据发送给客户端吗?

1 个答案:

答案 0 :(得分:0)

Redux不会强制您使用规范化形式。这个问题远远超出了redux。

选择正确的模式始终是规范化和优化之间的权衡,并且在很大程度上取决于您要实现的特定功能。

如果您只想显示应用程序的当前用户是否跟随屏幕上显示的用户,则第一种方法很好。但是也许您也想在另一页上显示所有关注的用户,如果是这种情况,那么您提出的两种实现方式都不利于此,因为它们要求您过滤所有用户的数组才能获得关注的用户。并且在这种情况下,您希望拥有一个followedByMe数组,其中包含所有用户ID,然后是您。

但是,由于存储在redux中的数据与应用程序共享生命周期,因此与持久存储(例如数据库)中的数据相比,您的敏捷性要大得多。您可以同时使用isFollowedByMe字段和followedByMe列表来有效地实现这两个功能。而且,前端对于重构和更改更加耐用。这使您能够以低成本进行实验。因此,您可以使用某些架构,如果在某些时候它不适合您的需求,则可以进行重构,而无需进行任何迁移和填充。因此,不要害怕现在使用适合您的东西。

但是不要对后端和数据库架构使用相同的方法,它们很难重构。

相关问题