Javascript 按域构造Redux状态?

Javascript 按域构造Redux状态?,javascript,reactjs,state,redux,react-redux,Javascript,Reactjs,State,Redux,React Redux,当检索具有不同搜索参数的域对象时,一个结构应该如何还原状态 在我的应用程序中,我在表格中显示用户筛选的组织的列表。在同一页上,我还将显示一个用户所属的组织的较小列表,也许将来在同一页上会显示另一个仅显示另一个用户的组织的较小列表 我是否这样做: { list_organisations: [ { id: 1, name: 'foo1' //... }, { id: 2, name: 'foo2' //... }, { id: 3, name

当检索具有不同搜索参数的域对象时,一个结构应该如何还原状态

在我的应用程序中,我在表格中显示用户筛选的
组织的列表。在同一页上,我还将显示一个用户所属的组织的较小列表,也许将来在同一页上会显示另一个仅显示另一个用户的组织的较小列表

我是否这样做:

{
    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端点的结构相同。

Hmm我喜欢它。虽然我从API服务器用这种结构响应吗?还是在减速器中建造?我更喜欢保持我的API不特定于redux:)确切地说,保持您的API真实。客户端实现应该定义如何返回数据。它可以影响它,但不能定义它。最后一个问题!是否有一个巧妙的技巧来为实体设置ID键?我不想要重减缩器?我使用不变性帮助器并执行如下操作:
{[action.user.id]:action.user}