2016-10-01 3 views
0

を使用してネイティブ反応します。注:私はredux-thunkミドルウェアを使用しています。私が行うことができるようにしたいどのようなは、私は私のコンポーネントに反応から呼び出されるアクションの作成者を持ってReduxの-サンク

export function submitProfile(profile) { 
    return dispatch => { 
    axios.post(`some_url`, profile) 
     .then(response => { 
     console.log("Profile submission request was successful!"); 

     dispatch({ ... }); // dispatch some action 

     // this doesn't seem to do anything . . . 
     return Promise.resolve(); 
     }) 
     .catch(error => { 
     console.log(error.response.data.error); 
     }); 
    }; 
} 

は、プロファイルを提出し、その要求が成功した後、その後、私のコンポーネントからのナビゲーターに新しいルートをプッシュするアクションの作成者を呼んでいます。投稿のリクエストが成功したと判断してルートをプッシュできるようにしたいだけです。それ以外の場合は、何もプッシュしませんが、エラーが発生したとします。もう一度やり直してください。

私はオンラインで検索してPromise.resolve()を見つけましたが、私の問題は解決していません。私は、redux-promiseミドルウェアを使用していた場合、アクションクリエーターを呼び出した後、ちょうど私ができることを知っています。どのように私はそれをredux-thunkでやっていますか?

+0

さて、現在作業中です。 axios.postリクエストに** return **キーワードを追加するだけでした。つまり、次のようになります。return dispatch => {** return ** axios.post(...); }; – nbkhope

+1

あなた自身の質問に答えてそれを受け入れることができます。多分それは将来同様の問題を持つ他の人を助けるでしょう。 –

+0

実際には、コンポーネントでエラーのケースを処理したかったので、アクションクリエータを呼び出したときに解決策が見つかりませんでしたが、アクションクリエータ自体がキャッチを実行しても常に成功ケースが返されることが判明しました。アクションクリエイターのcatchブロック内にPromise.rejectを返す必要がありますか? – nbkhope

答えて

0

サンクとして定義された関数からの戻り値が返されます。したがって、物事が正しく機能するためには、アクシオスの要求をサンクから返さなければなりません。

export function submitProfile(profile) { 
    return dispatch => { 
    return axios.post(`some_url`, profile) // don't forget the return here 
     .then(response => { 
     console.log("Profile submission request was successful!"); 

     dispatch({ ... }); // dispatch some action 

     return Promise.resolve(); 
     }) 
     .catch(error => { 
     console.log(error.response.data.error); 
     }); 
    }; 
} 
関連する問題