2016-08-26 4 views
0

Reduxストアがリストを処理する最良の方法を理解しようとしています。今すぐこのように見えます:この店舗構造を書くには?

Store = { 
    users: [], 
    posts: [], 
    lists: [], 
} 

これは私の問題です、リストの配列です。例えばので、基本的にそれは、特定のリソースのページ分割リストのための店だ:

lists: [ 
    { 
     id: 'users/43/posts', 
     items: [25, 36, 21] 
    } 
] 

私はIDとしてURLを使用しておりますので、投稿のユーザーのリストを示して、私のコンポーネントが表示するリストかを正確に知ることができます。今誰かが私に言った、これは非常に悪い考えです。そして、私はちょうど良いことができるかについていくつかのアドバイスをしたいだけです。

users: [{ 
    id: 2, 
    posts: [ 
     { 
      url: 'users/2/posts', 
      items: [13, 52, 26], 
     } 
    ] 
}] 

私が理解していないことは、どのようにこのリストを保存するかをReduxは知っていますか?アクション引数にどこに保存するか指定する必要がありますか?

ありがとうございました。

+0

なぜそれは悪い考えですか?私がその考えを誤解しない限り、RESTの仕組みのように聞こえる... – GreenAsJade

+0

@GreenAsJadeだから、私の友人は、これが本当に面倒なことになると言っています。私はそのアプローチが本当に好きですが、どのコンポーネントも簡単にアクセスできます。 –

答えて

1

技術的には、動作させると何かが機能します。しかし、第二のアプローチはより成熟しています。あなたはIDとしてURLを使いたくありません。 IDは数字または特殊な文字列+数字でなければなりません。アプリケーションが大きくなると、データを正規化してIDを別の配列に格納し、IDのキーを持つオブジェクトにオブジェクトの配列を変換する必要があります。 Normalizr

[{ 
    id: 1, 
    title: 'Some Article', 
    author: { 
    id: 1, 
    name: 'Dan' 
    } 
}, { 
    id: 2, 
    title: 'Other Article', 
    author: { 
    id: 1, 
    name: 'Dan' 
    } 
}] 

から

例に正規化することができる -

{ 
    result: [1, 2], 
    entities: { 
    articles: { 
     1: { 
     id: 1, 
     title: 'Some Article', 
     author: 1 
     }, 
     2: { 
     id: 2, 
     title: 'Other Article', 
     author: 1 
     } 
    } 
    } 
} 

アプリケーションが成長したとき、あなたは複数の減速とサブ減速を持っています。状態ツリーの特定の部分をスライスしたいなどです。その理由のために、あなたは別の方法であなたの州を保管するようにアドバイスしているかもしれません。

もう一度、動作させると何も動作します!がんばろう!

+0

これらのリストの中には、動的に生成される(ユーザーの最近の投稿のリスト)ので、これらのリストの中にはIDを持たないものがあることに注意することが重要です。 –

+0

@SebastianOlsenああ大丈夫です!だから自分のプロジェクトでやったことは、自分のIDが付いていないオブジェクトに自分のIDを追加したことです。配列をループし、 'id'という名前の別のキーを追加し、それに整数値を与えます。 – Mihir

+0

Reactコンポーネントに、どのIDを探すべきかを教えてください。 –