2016-10-25 16 views
7

私はAPIからいくつかのデータを取得し、それを私のアプリケーションに渡そうとしています。 React/Reduxの新機能ですが、これらの呼び出しをどこから行うのか、それを私のアプリケーションに渡す方法は不思議です。私は標準的なフォルダ構造(コンポーネント、レデューサー、コンテナなど)を持っていますが、私は現在API呼び出しをどこに置くべきかわかりません。React/ReduxアーキテクチャでAPIコールをどこに置くべきですか?

+0

単純なAPIコールであれば、componentdidmountのようなコンポーネントのライフサイクルメソッドに配置し、レスポンスを返すときにアクションをディスパッチすることはできますが、すぐにデバッグして維持するのは難しくなりますそのような場合には、ミドルウェアを使用する方が良いでしょう。最も人気が高いのはおそらく還元型サンクスか還元型サガです。私は個人的にはサガを好むでしょう – StackOverMySoul

答えて

0

AJAXコールなどの動作は「副作用」と呼ばれ、一般的にコンポーネント、「サンク」アクションクリエイター、または「サガ」などの他の同様のRedux副作用アドオンに存在します。

詳しくは、Redux FAQのhttp://redux.js.org/docs/faq/Actions.html#actions-side-effectsを参照してください。

1

これを開始する最も簡単な方法は、サンクと呼ばれる関数を使用して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 
    } 
} 
+0

このアクションをディスパッチ/呼び出す方法? – mattnedrich

1

を「魚の答えに男を教えます。」

これは、コールのタイプと状況によって異なります。

簡単なため一般
  1. はネーダーダビットが示されているように、これはあなたの行動のクリエイターにそれら を置くことによって、容易に行うことができ、「取得します」。
  2. 私は今のReduxの-サガを使用する多くの彼らのブロックにそれらを配置する のためにあなたを選ぶでしょう副作用の管理ライブラリ(Reduxの-サガ、axiosコール、Reduxの-サンク)

があります。少なくともJSの新しいバージョンに入っているかもしれないasync/awaitについて、私たちがやりたいことを決めるまで。

これは最も重要な部分です!

ちょうど考慮に通常のドキュメント、で見つかったツールのあなたの特定のセットで使用されている一般的な「規則」を取ると、このようなことのために将来的には、「ベストプラクティス」をGoogleに必ずしてください。これは、あなたのプロジェクトに新しいことをやってもらうために役立ちます。あなたの新しいカスタムバージョンの学習を増やさずに飛び込むだけです。

関連する問題