繁体   English   中英

按域构建Redux状态?

[英]Structuring Redux state by domain?

在检索具有不同搜索参数的域对象时,应该如何构造Redux状态。

在我的应用程序中,我在表格中显示用户过滤的organisations列表。 在同一页面上,我还将显示用户所属的组织的较小列表,并且可能在将来显示同一页面上仅显示来自其他用户的组织的另一个小列表。

我这样做:

{
    list_organisations: [
        { id: 1, name: 'foo1' //... },
        { id: 2, name: 'foo2' //... },
        { id: 3, name: 'foo3' //... },
        { id: 4, name: 'foo4' //... },
        { id: 5, name: 'foo5' //... },
    ],
    user_one_organisations: [
        { id: 6, name: 'foo' //... },
        { id: 2, name: 'foo' //... },
    ],
    user_two_organisations: [
        { id: 4, name: 'foo' //... },
        { id: 6, name: 'foo' //... },
    ],  
}

或这个:

{
    users: [
        { id: 1, organisations: [7,3,8], name: 'billy' },
        { id: 2, organisations: [3,6,1], name: 'sam' },
    ]
    organisations: [
        { id: 1, name: 'foo', //... },
        { id: 2, name: 'foo1', //... },
        { id: 3, name: 'foo2', //... },
        { id: 4, name: 'foo3', //... },
        { id: 5, name: 'foo4', //... },
        { id: 6, name: 'foo5', //... },
        { id: 7, name: 'foo6', //... },
        { id: 8, name: 'foo7', //... },
        { id: 9, name: 'foo8', //... },
    ],  
}   

如果我们选择选项二,在我们需要为某种目的查找单个组织的情况下我们该怎么办,例如“检查组织内是否存在用户电子邮件” - 这一切看起来都很复杂......尤其是当做一次请求? 甚至应该生活在redux状态?

这会像这样:

{
    users: [
        { id: 1, organisations: [7,3,8], name: 'billy' },
        { id: 2, organisations: [3,6,1], name: 'sam' },
    ]
    organisation_signup_form: {
        doesUsersEmailExist: true / false / null,
    }
    organisations: [
        { id: 1, name: 'foo', //... },
        { id: 2, name: 'foo1', //... },
        { id: 3, name: 'foo2', //... },
        { id: 4, name: 'foo3', //... },
        // ...
    ],  
}   

我实际上建议以完全不同的方式构建数据。 您希望确保所有模型都易于获取,因此将它们保存在数组中可能会非常棘手。

我建议一个像这样的状态结构:

users: {
    1: { id: 1, organisations: [7,3,8], name: 'billy' },
    2: { id: 2, organisations: [3,6,1], name: 'sam' },
},
userList: [1,2],
organisation_signup_form: {
    doesUsersEmailExist: true / false / null,
},
organisations: {
    1: { id: 1, name: 'foo', //... },
    2: { id: 2, name: 'foo1', //... },
    3: { id: 3, name: 'foo2', //... }
}

我在这个问题上得到了丹的建议

检查组织中是否存在用户电子邮件

您没有关于用户模型的电子邮件,并且不清楚,因此很难回答该特定问题。

我给出的一点建议是,您需要在数据库中构建状态,但它不必与实际数据库或api端点具有相同的结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM