/ / FluxアーキテクチャでReactを使用して非同期呼び出しを行うときのベストプラクティスは何ですか? - javascript、facebook、reactjs、redux、flux

RexでFluxアーキテクチャで非同期呼び出しを行う際のベストプラクティスは何ですか? - javascript、facebook、reactjs、redux、flux

私はReact / Reduxと一緒に私は現在、Reduxの代わりにFacebookのFluxを使ってReactアプリケーションに参加していますので、FluxとReduxとの違いについて読んでから、私は完全に理解していないものを見つけました。誰かがここで問題を「議論する」ことができます!

FacebookのFluxのドキュメンテーションでreduceStoreのreduceメソッドでは、 "このメソッドは純粋であり、副作用がありません"(これはReduxの純粋な関数のリデューサメソッドとよく似ています)。しかし、独自の例では:Flux asynchttps://github.com/facebook/flux/tree/master/examples/flux-async)、彼らはDataManagerを導入します。DataManagerは、API呼び出し。このマネージャは、reduceメソッド内からその例で呼び出されます。 Ergo、独自の例のreduceメソッドは副作用を引き起こし、非純粋な関数にしています。

ここでベストプラクティスは何ですか?そしてあなたは何を使っていますか?これらの不純物はどこに置かれるべきですか?

私の "Redux"に夢中になったアプローチは、ビューから呼び出されるアクション作成者(Reduxのような)です。このメソッドは、アクションをディスパッチする非同期APIコールを実行します。したがって、私のアプローチを明確にするために、フェッチロジック(副作用)をストアから取り除き、代わりにいくつかのアクション作成メソッドに取り除くことになります。

sudoコードのアクション作成者は次のようになります:

getSomedata(param){
dispatch({type: GET_SOME_DATA_FETHCING})
doApiCallAsync()
.then( () =>{dispatch({type: GET_SOME_DATA_SUCCESS, result: json.result})})
.catch( () =>{dispatch({type: GET_SOME_DATA_FAILURE})})
}

回答:

回答№1は0

Reduxとは異なり、Fluxは処理方法を制限しません非同期操作をまったく行いません。ベストプラクティスは存在しないかもしれません。それは開発者の好みに依存します。これは、Fluxの公式非同期の例です。 https://github.com/facebook/flux/tree/d95f9b9a06a24ccc8ba6b5742759ea3a383f20c9/examples/flux-async

ご覧のとおり、APIを介して TodoDataManager 店の中で、右のように この行 または この行;アクションクリエイターは使用しません。 TodoDataManagerまた、アクションをディスパッチします。個人的には、私はこのアプローチが本当に好きではありません。あるいは、Fluxが好きではないと言いましょう。

実際、FluxアプリケーションをReduxに移行していますが、古いFluxアプリケーションも同様のアプローチを採用しています。イベントエミッタを使用してコンポーネントにストアの変更を通知します。コードベースは混乱しています。

もし 私はフラックスを使用しなければならない、私は同じアプローチを使用するあなたのように、責任を明確に分けて、コードベースを推論しやすくします。 Reduxへの移行がオプションであれば、とにかくReduxを選択します。