web-dev-qa-db-ja.com

ngrx / storeサンプルアプリが複数のストアを使用するのはなぜですか? (店舗のデザイン方法)

かなり大きくてスケーラブルなアプリケーションを作成しようとしていますが、アプリケーション全体の現在のグローバル状態(一時的/再読み込み時に削除されたデータとセッション永続的なデータの両方を含む)を1つのストアに保存することがベストプラクティスであると言われました。複数のモジュールに分かれている場合でも。

なぜ ngrx/storeのアプリの例 ngrx/store-websiteで見つけることができるのか疑問に思っていました。各レデューサーには、次のような独自のコードがあります。

export interface State {
  ids: string[];
  entities: { [id: string]: Book };
  selectedBookId: string | null;
};

export const initialState: State = {
  ids: [],
  entities: {},
  selectedBookId: null,
};

では、なぜ公式ガイドはほとんどの人が推奨するように単一の店舗を使用しないのですか?または、すべてのレデューサーが1つのモジュールに属している限り、単一のストアと見なされますか?そうでない場合、単一の中央ストアを実装するにはどうすればよいですか?私の考えは、Storeジェネリックを使用して、それらのバリエーションをテーブルに配置することです。もう1つのオプションは、reducer-actionsでプロパティを更新する単一のJSオブジェクトを持つことです。いずれにせよ、テーブルまたはオブジェクトに何らかの構造が必要です。これに関するベストプラクティスはありますか?より良い例アプリを知っていますか?

8
Phil

サンプルアプリは単一のストアを使用しています。この場合の状態は、レデューサーのインターフェースです。 1つのストアに多くのレデューサーを含めることができます。

単一のストアを使用することがベストプラクティスと見なされます。ほとんどすべての中小規模のアプリには、1つのストアで十分です。

NGRXストアで再作成されたAngular Tour of Heroesアプリケーションの非常に良い例があります。ここで見つけることができます: http://bodiddlie.github.io/ng-2 -toh-with-ngrx-suite /

9
Ezeon