Как следует структурировать состояние 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', //... },
],
}
Если мы выберем второй вариант, что нам делать в случае, если нам нужно найти одну организацию для какой-то цели, например. «проверить, существует ли электронная почта пользователя в организации» — все это кажется таким сложным… особенно при выполнении разовых запросов? должно ли это даже жить в состоянии редукции?
Это сделало бы это так:
{
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', //... },
// ...
],
}