web-dev-qa-db-ja.com

Angular 2:サービスとreduxの違い

サービスからデータを保存および取得することもできるため、reduxの必要性は何ですか。私が理解している限り、サービスにデータを取得および保存することもでき、それらのサービスは他のコンポーネントで使用できます。

17
blackHawk

Reduxは必要ありませんが、状態を維持する方法は必要です。サービスは可能ですが、最終的にはreduxまたはngrxストアに似たものを送信します。

課題を検討してください。データが非同期で受信されます。あなたはそれを反応的にしたい。エラー処理が必要です。データが更新されるときに待機状態が必要です。 1つのイベントが複数のアクションをトリガーし、それぞれに独自のレイテンシーとエラーパスがあるカスケードシナリオがあります。

また、複数のコンポーネントで使用できるパターンを設定する必要があります。

ビクター・サブキンは、非常に滑らかな観測量でこれを行う方法を持っています。 Ngrxには別の方法があります。

サービスを使用して、適度に複雑なコンポーネントを作成しました。それはうまくいきました。状態が定義されておらず、エラーが発生したいくつかの奇妙な状況を追跡するために、時間が消えてしまいます。パターンとして再利用できるものを手に入れるには、雑草に深く入りすぎていました。その結果、壊れやすく、もろくなりました。それは完全に反応的ではなく、それを作ることは非常に困難で時間がかかることを証明していました。私はそれをngrxに移植し、学習曲線を超えると、それは簡単ではありませんが、コードはより単純になり、完全にインストルメント化されて、迅速なデバッグが可能になりました。

YMMV。

Victor Savkinには状態を維持する方法に関する記事があります

25
Derek Kite

サービスはAngular実装の詳細です。一方、reduxはアーキテクチャの概念です。2つは直接比較できません。

ReduxをAngularに適用する方法に興味がある場合は、 @ngrx/storeの包括的な紹介 を読むことをお勧めします。

1
cartant

サービスはAngular機能であり、ユーザーは一般的なメソッドとプロパティを管理できます。ただし、アプリケーションの状態(アプリケーションを通じて一般的に使用されるプロパティ)を管理するための構造的な方法を提供する状態パターン。

リーンに興味がある場合はAngular状態パターン)@ngrx/store && @ngxs/storeをお勧めします。どちらも良いものになります。ngxsをお勧めします。 @ngrs/storeの実装を比較するよりも簡単で、学ぶべき明確なドキュメントがあります。

0
Loga Nathan