2017-08-26 19 views
1

還元の世界に入って、私がやっていることが正気で正しいことを確かめたい。Redux正規化状態の形状削除参照ID複数の場所

`` `

posts: { 
     "1": { 
     "id": "1", 
     "title": "My first post!", 
     "author": "Jake", 
     }, 
     "2": { 
     "id": "2", 
     "title": "This other other post", 
     "author": "Paul", 
     }, 
     "3": { 
     "id": "3", 
     "title": "This new post", 
     "author": "Billy", 
     }, 
     "4": { 
     "id": "4", 
     "title": "This other other other post", 
     "author": "Arnold", 
     }, 
    }, 
globalFeed: { 
    postIds:["1","2","3","4"] 
}, 
myFeed: { 
    postIds:["1","2"] 
}, 

` ``

我々は二つの異なるフィードを持っており、それらを含む記事を参照している例:私たちはこのようになります正規化された状態を持っています。ダン・アブラモフ氏は、正規化された状態でアイテムを削除することについてどこかで投稿しています。リストを参照すると、そのアイテムへの参照を削除すると良い解決策になると述べました。

私のアプリでは、投稿のリストを表示して1つの投稿を見ることができるので、参照のみを削除することは解決策ではありません。だから私の質問、私はちょうど特定の投稿を削除する(すなわちID 1の投稿)状態から参照をそのまま残す。セレクタを使用して投稿を検索し、未定義の値をフィルタリングします。この解決法は正気か?私はいくつかの問題にぶつかるのだろうか?もっと良い解決策はありますか?私は特定の投稿と参照を削除することができましたが、その投稿を参照する複数の場所がある場合は、定型文がたくさんあります。

セレクター例

`` `

const globalFeedPosts = state => { 
    return state.globalFeed.postIds 
     .map(id => state.posts[id]) 
     .filter(value => value !== undefined) 
}; 

` ``

おかげ

答えて

0

あなたはresuxストアからオブジェクトを投稿削除する場合はdefinetlyでは、問題に実行されます私の意見は、より良いアプローチは、以下のように必要に応じて投稿配列をフィルタリングすることを可能にする投稿オブジェクトのそれぞれに1つ以上のフラグを追加することです。 ps。

posts: { 
     "1": { 
     "id": "1", 
     "title": "My first post!", 
     "author": "Jake", 
     "isShown":true 
     }, 
     "2": { 
     "id": "2", 
     "title": "This other other post", 
     "author": "Paul", 
     "isShown":false 
     }, 
     "3": { 
     "id": "3", 
     "title": "This new post", 
     "author": "Billy", 
     "isShown":false 
     }, 
     "4": { 
     "id": "4", 
     "title": "This other other other post", 
     "author": "Arnold", 
     "isShown":false 
     }, 
    }, 
globalFeed: { 
    postIds:["1","2","3","4"] 
}, 
myFeed: { 
    postIds:["1","2"] 
}, 
+0

私はどのような問題に取り組むことができますか?ちょうど教育目的のために。あなたのソリューションはより良く聞こえるのでセレクタは定義されていない投稿をフィルタリングする代わりに同じで、 "isShown"の投稿をフィルタリングします:そうですか? :) – Polisas

+0

イェーア、絶対に。だから、私たちが直面する問題に移ります。 - ポストオブジェクトが店から取り除かれると、そのポストオブジェクトへの参照があるかもしれませんが、元のポストオブジェクトを元に戻すことはできません。それを再び利用可能にするには、それを削除する前に余分なコピーを作成する必要があります。なぜなら、それを再び追加しようとすると、それが必要なのです。お役に立てれば。コメントの長さに申し訳ありません – mindaJalaj

+0

問題ない、明確化のおかげで。 – Polisas

関連する問題