2016-09-30 6 views
10

私はちょうど反応を開始しており、少し失われています。私はログインページを作って、http投稿要求をしようとしています。今私は、HTTPリクエストの作業のいずれかのタイプを取得しようとしているので、私は、要求ビンを使用していると私はNPMパッケージのドキュメントで、この基本的なアクション(https://www.npmjs.com/package/redux-react-fetch)が見つかりました:の後に、そうreact-reduxでHTTPリクエストを作成するにはどうすればよいですか?

export function updateTicket(ticketId, type, value){ 
    return { 
    type: 'updateArticle', 
    url: `http://requestb.in/1l9aqbo1`, 
    body: { 
     article_id: ticketId, 
     title: 'New Title' 
    }, 
    then: 'updateTicketFinished' 
    } 
} 

を行動を書く、私は何をしますか?実際に私のアプリに電話をかけてその行動を利用させるにはどうすればいいですか? npmパッケージのドキュメントには、自分の店の状態を設定するための何かが書かれています。それは最初に設定する必要があるのでしょうか?

+0

私はあなたが言及ライブラリを使用していませんでしたが、私はあなたをお勧めしますReduxに関する無料のビデオを見てください。 httpコールの作成方法を含めて、作成者自身に行くために必要なものすべてを学習します。これを行うには別の抽象化は必要ありません https://egghead.io/courses/getting-started-with-redux https://egghead.io/courses/building-react-applications-with- idiomatic-redux –

+1

[ここ](http://redux.js.org/docs/advanced/AsyncActions.html)は、あなたがやろうとしていることのドキュメントです。基本的には2つのことが必要です。まず、アクションを呼び出すときにajaxリクエストを開始します(たとえば、fetchまたはjQueryなど)。これはアクション自体の中で起こる可能性が最も高いでしょう。次に行うことは、ajax呼び出しが完了したときにajax呼び出しの情報でストアを更新することです。これを行うには、ストアの 'dispatch'関数にアクセスする必要があります。 'AsyncActionCreators'のセクションはこれを行う方法を示します。 – mrmcgreg

+0

私はまた、 'react-redux'だけで何かをする方法を理解するまで、その図書館から離れています。 – mrmcgreg

答えて

22

次のいずれかを試すことができます。私はfetchaxiosの両方を使用していますが、彼らは驚くほどうまく機能します。しかし、superagentを試してみてください。

  1. 要求を行うために、あなたはすべてのブラウザ(link
  2. Axiosライブラリ間の互換性のために フェッチポリフィルでfetchを使用することができます。 (link
  3. 約束してたSuperAgent。(link

あなたがフェッチ使用している場合、それはまだIEとSafariでサポートされていませんので、あなたがポリフィルを使用する必要があります。しかし、polyfillではかなりうまく機能します。どのようにそれらを使用するためのリンクをチェックアウトすることができます。

あなたのアクションクリエイターには、上記のいずれかを使用してAPIを呼び出すことができます。

function fetchData(){ 
    const url = '//you url' 
    fetch(url) 
    .then (response) => {//next actions} 
    .catch(error) => {//throw error} 
} 

をFETCH AXIOS

axios.get('//url') 
    .then(function (response) { 
    //dispatch action 
    }) 
    .catch(function (error) { 
    // throw error 
    }); 

だから、今の状態に来て、API呼び出しのためでした。 reduxにはあなたのアプリを扱う1つの状態があります。私はあなたがhere見つけることができるreduxの基本を通過することをお勧めします。だから、あなたのAPI呼び出しが成功すると、あなたの状態をデータで更新する必要があります。

状態

function receiveData(data) { 
     return{ 
     type: 'RECEIVE_DATA', 
     data 
    } 
    } 

を更新するために、データに

function fetchData(){ 
    return(dispatch,getState) =>{ //using redux-thunk here... do check it out 
     const url = '//you url' 
     fetch(url) 
     .then (response) => {dispatch(receiveData(response.data)} //data being your api response object/array 
     .catch(error) => {//throw error} 
    } 
    } 

アクションをフェッチするアクションリデューサー

function app(state = {},action) { 
     switch(action.types){ 
      case 'RECEIVE_DATA': 
       Object.assign({},...state,{ 
        action.data 
        } 
        }) 
      default: 
      return state 
     } 
    } 
+1

華麗な要約。おかげでハルキラット –

+0

ありがとう。 Axios.postを使ってAxiosでPOSTリクエストをしようとしていますが、getリクエストを送信し続けます。投稿を機能させるためのアクションを作成する必要がありますか?参照してください:http://stackoverflow.com/questions/39797940/react-axios-is-sending-a-get-request-instead-of-a-post – jmona789

+0

推測のurの問題は解決しましたか? –

関連する問題