、私は、次た:Angular4 + Redux:誰がアクションをディスパッチする必要がありますか? (ngrx店舗で)Reduxのを使用して角度4 Appで
APIを呼び出して、アクションをディスパッチサービス
this.contentService.update(this.content).subscribe(data => {
//output some success message
});
サービスを呼び出すスマートコンポーネント
update(content: Content) {
return this.http.put(`http://someendpoint/contents.json`, { content })
.map((updated_content: Content) => {
this.store.dispatch({ type: 'SOME_KEY', payload: updated_content } );
return updated_content;
});
}
このアプローチは本当にうまくいっていますが問題ありません。しかし、これが正しいのかどうかは分かりません。コンポーネントがAPIの応答を処理して、ストアにアクションをディスパッチさせる方が良いでしょうか?私はこれを分けるべきですか?長所と短所は何ですか?私はこれについて良い記事を見つけることができません。
コメントありがとうございます!私はこのアプローチにして、私のサービスからロジックを分離し、おそらくエフェクトを使用すると思います(アプリケーションは非常に「小さい」から始まりましたので、私はそれを使用すると多くの利点があるとは思わなかったが、それら)。 :-) –
私は同意します、エフェクトはサービスを呼び出す場所です。 –
私が言ったように、_一般的な真のソリューション_はありません - リファクタリングには常にリスクが伴い、ほとんどの場合、かなりの労力が必要です。アプリケーションで作業する唯一の開発者で、50ファイル以下であれば、あなたが迷惑をかける可能性のある他のものを見つけるかもしれない@Effectを使って、それは魔法的に良くなるだろう;-)(クリーナーかもしれないが、それはもっと仕事になるだろう) – olsn