私はMaximeの回答をよりよく理解しようとしています。これはquestionです。私の担当者はそこに答えを述べるのに十分ではないので、私はここで新しい質問をするでしょう。このngrxセレクタは何をしていますか?
正規化された状態を設定する部分は意味があります。次に、セレクタを作成する方法について話を進め、答えのこの部分を下に引用し、コードブロックを示します。
ロジックまたはビュー(たとえばAngular)では、配列を反復処理できるように入れ子構造が必要なため、IDの文字列配列を反復したくありません。代わりに、actualContent:ActualContent [];を使用します。
このため、セレクタを作成します。ストアが変更されるたびにセレクタが起動し、生データの新しい「ビュー」を生成します。
// assuming that you can blogContentsState and actualContentsState from your store
const getBlogContents = (blogContentsState, actualContentsState) =>
blogContentsState
.allIds
.map(blogContentId => ({
...blogContentsState.byId[blogContentId],
actualContent: blogContentsState
.byId[blogContentId]
.actualContentIds
.map(actualContentId => actualContentsState.byId[actualContentId])
}));
私の質問はBlogContent
の型定義は、ネストされたactualContent
アレイにまだあるかどうか、でしょうか?
export interface BlogContent {
id: string;
header: string;
tags: string[];
title: string;
actualContent: ActualContent[]; <------ NESTED
}
私はかなりセレクタgetBlogContents
が何をしているかを理解していないと、これはactualContentsのネストされたリストでblogContentsを表示したい部品に使用されるだろうか、これはもう少し詳細に説明することができますか?
ちょっとseescode私はあなたがピザを見てきてうれしいです:同期:)!はい、私はピザ同期の再選択を使用しないことを知っていますが、これが安定するとngrx v4にアップグレードする予定です(この大規模なアップグレードではバグはほとんどありません。彼らのgithub)。それがうまくいけば、私はリファクタリングを行い、再選択と同じことをするngrx v4が提供するcreateSelectorを使用します:) – Maxime
プロジェクトを公開してくれてありがとう。私はngrx v4を試していませんが、試してみる前にもっと長く待つ必要があることを知っておくと便利です。 – seescode
確かに、ngrx v4とAOTの間の非互換性に注意する唯一の人ではありません。あなたがAOTコンパイルを使用しない場合(それはあまりにも悪いでしょう)、あなたはそれを求めて行くかもしれません。また、ngrx v4に移行するアプリを持っている場合は、すべてがAOTなしのdevモードでうまくいくように見えるので、既に起動することができます。 – Maxime