2016-04-29 15 views
1

異なる検索パラメータを持つドメインオブジェクトを取得するときに、どのようにRedux状態を構造化する必要がありますか。ドメインごとにRedux状態を構造化しますか?

私のアプリケーションでは、ユーザがテーブルにフィルタリングするorganisationsのリストを表示します。同じページに、ユーザーが所属する組織のリストが表示されます。また、今後、別のユーザーの組織のみを表示する同じページの小さなリストも表示されます。

私はこれを行うください:我々はオプション2で行く場合は、我々は、単一の検索に必要がある場合に何をしますか

{ 
    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', //... }, 
    ], 
} 

{ 
    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' //... }, 
    ], 
} 

またはこれをいくつかの目的のための組織「ユーザーの電子メールが組織内に存在するかどうかをチェックする」 - それはすべて複雑すぎるように見えます。それは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', //... }, 
     // ... 
    ], 
} 

答えて

3

私は実際には完全に別の方法であなたのデータを構造化お勧めします。あなたはあなたのモデルのすべてが入手しやすいことを確認したいので、配列を維持するのは難しいかもしれません。

私はこのような状態構造の何かをお勧めしたい:ユーザーの電子メールが組織内に存在する場合

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', //... } 
} 

私はこのquestion

チェックにダンからこのアドバイスを得ましたが

あなたはユーザーモデルにメールを載せていませんが、それは明らかではないので、その特定の質問に答えるのはかなり難しいです。

あなたの状態をデータベースのように構造化する必要がありますが、実際のデータベースやAPIのエンドポイントと同じ構造である必要はありません。

+0

私はそれが好きです。 APIサーバーからこの構造を使用しても対応できますか?または減速機でそれを構築する?私は自分のAPIをnon-redux特有のものにしておきたいと思っています:) – AndrewMcLagan

+0

正確には、API自体を真に保ちます。クライアントの実装では、データの返却方法を定義する必要があります。影響を与えることはできますが、定義することはできません。 – Clarkie

+0

Cool。最後の1つの質問! IDを持つエンティティをキー入力するための素敵なトリックはありますか?私は重い減速機を望んでいないのですか? – AndrewMcLagan

関連する問題