還元の世界に入って、私がやっていることが正気で正しいことを確かめたい。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)
};
` ``
おかげ
私はどのような問題に取り組むことができますか?ちょうど教育目的のために。あなたのソリューションはより良く聞こえるのでセレクタは定義されていない投稿をフィルタリングする代わりに同じで、 "isShown"の投稿をフィルタリングします:そうですか? :) – Polisas
イェーア、絶対に。だから、私たちが直面する問題に移ります。 - ポストオブジェクトが店から取り除かれると、そのポストオブジェクトへの参照があるかもしれませんが、元のポストオブジェクトを元に戻すことはできません。それを再び利用可能にするには、それを削除する前に余分なコピーを作成する必要があります。なぜなら、それを再び追加しようとすると、それが必要なのです。お役に立てれば。コメントの長さに申し訳ありません – mindaJalaj
問題ない、明確化のおかげで。 – Polisas