私はAPIからいくつかのデータを取得し、それを私のアプリケーションに渡そうとしています。 React/Reduxの新機能ですが、これらの呼び出しをどこから行うのか、それを私のアプリケーションに渡す方法は不思議です。私は標準的なフォルダ構造(コンポーネント、レデューサー、コンテナなど)を持っていますが、私は現在API呼び出しをどこに置くべきかわかりません。React/ReduxアーキテクチャでAPIコールをどこに置くべきですか?
答えて
AJAXコールなどの動作は「副作用」と呼ばれ、一般的にコンポーネント、「サンク」アクションクリエイター、または「サガ」などの他の同様のRedux副作用アドオンに存在します。
詳しくは、Redux FAQのhttp://redux.js.org/docs/faq/Actions.html#actions-side-effectsを参照してください。
これを開始する最も簡単な方法は、サンクと呼ばれる関数を使用してredux-thunk
というアクションを追加することです。あなたがやらなければならないことは、お店にサンクを追加されます。そして、APIを呼び出して、あなたの行動で関数作成
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers/index';
const store = createStore(
rootReducer,
applyMiddleware(thunk)
);
:
export const getData() {
(dispatch) => {
return fetch('/api/data')
.then(response => response.json())
.then(json => dispatch(resolvedGetData(json)))
}
}
export const resolvedGetData(data) {
return {
type: 'RESOLVED_GET_DATA',
data
}
}
このアクションをディスパッチ/呼び出す方法? – mattnedrich
を「魚の答えに男を教えます。」
これは、コールのタイプと状況によって異なります。
簡単なため一般- はネーダーダビットが示されているように、これはあなたの行動のクリエイターにそれら を置くことによって、容易に行うことができ、「取得します」。
- 私は今のReduxの-サガを使用する多くの彼らのブロックにそれらを配置する のためにあなたを選ぶでしょう副作用の管理ライブラリ(Reduxの-サガ、axiosコール、Reduxの-サンク)
があります。少なくともJSの新しいバージョンに入っているかもしれないasync/awaitについて、私たちがやりたいことを決めるまで。
これは最も重要な部分です!
ちょうど考慮に通常のドキュメント、で見つかったツールのあなたの特定のセットで使用されている一般的な「規則」を取ると、このようなことのために将来的には、「ベストプラクティス」をGoogleに必ずしてください。これは、あなたのプロジェクトに新しいことをやってもらうために役立ちます。あなたの新しいカスタムバージョンの学習を増やさずに飛び込むだけです。
- 1. ReactとReduxでデータモデルをどこに置くべきですか?
- 2. CakePHPアプリケーションでCASセッションチェックコードをどこに置くべきですか?
- 3. フラックススタンダードアクションでリクエストステータスをどこに置くべきですか?
- 4. Zendフレームワークでは、カスタムバリデータはどこに置くべきですか?
- 5. カスタムバリデーターはどこでRails 5に置くべきですか?
- 6. エリクサーフェニックスグローバルコントローラーヘルパーをどこに置くべきですか
- 7. どこにデータマネージャーを置くべきですか
- 8. どこにdjangoアプリケーションフォルダを置くべきですか
- 9. 私はグリッドコードをどこに置くべきですか?
- 10. どこにgtk.hファイルを置くべきですか?
- 11. 私はrespond_toブロックをどこに置くべきですか?
- 12. Androidスタジオ:どこに弦を置くべきですか?
- 13. クロノスをどこに置くべきですか?
- 14. S#arpコマンドのアーキテクチャ:このドメインロジックをどこに置くか
- 15. Node.js Webプロジェクトフォルダはどこに置くべきですか?
- 16. Googleサイトのサーバーサイドコードはどこに置くべきですか?
- 17. ApnsPHPの.pemファイルはどこに置くべきですか?
- 18. パーシャルビューはどこに置くべきですか
- 19. PHP:Restfulサービスコードはどこに置くべきですか?
- 20. 空の基本クラスはどこに置くべきですか?
- 21. SQLクエリはどこに置くべきですか?
- 22. Google Geocoding APIのAPIキーはどこに置くのですか?
- 23. Webアプリケーション(mavenプロジェクト)でjava.util.loggingのlogging.propertiesファイルをどこに置くべきですか?
- 24. GrailsアプリケーションでGroovyクラスのテストケースをどこに置くべきですか?
- 25. Djangoでグローバルアプリケーション設定ルーチンをどこに置くべきですか?
- 26. Androidスタジオ:オブジェクトRandomAccessFileでバイナリファイルをどこに置くべきですか?
- 27. このオブジェクトのプロパティ/属性はどこに置くべきですか
- 28. Swaggerize-Restifyプロジェクトで共通エンドポイントのアルゴリズムはどこに置くべきですか?
- 29. .NETプロジェクトでその他の機能はどこに置くべきですか?
- 30. 自分で書いたPythonパッケージはどこに置くべきですか?
単純なAPIコールであれば、componentdidmountのようなコンポーネントのライフサイクルメソッドに配置し、レスポンスを返すときにアクションをディスパッチすることはできますが、すぐにデバッグして維持するのは難しくなりますそのような場合には、ミドルウェアを使用する方が良いでしょう。最も人気が高いのはおそらく還元型サンクスか還元型サガです。私は個人的にはサガを好むでしょう – StackOverMySoul