2016-04-06 10 views
1

私はまだreactとreduxで始まっていて、今私はこのtutorialに従っており、発送のためにこのmiddlewareを使用しています。私は最初のものの後に別の発送をどうやって行うのだろうと思っていた(それをチェーンする)?私は今このようなものを持っています。反応し、次の発送を還元チェーン

fetchData() { 
    const { dispatch } = this.props; 
    const action = PageActions.fetchPage({slug: this.props.params.slug}); 
    dispatch(action); 
} 

と私はdispatch(action).then(...)ことができますが、dispatchのリターンは常に定義されていない場合は不思議。それは可能ですか?

答えて

3

アクションクリエータの内部で非同期アクションを使用する場合は、ミドルウェアを使用する必要があります。推奨されるミドルウェアはthunkです。

スタックには、使い方や適切な状況に関する良い記事があります。 Stack Overflow Async Actions

これにより、1つのアクションから多くのアクションをディスパッチできます。ただし、アクションを連鎖させたい場合は、最初のアクション定義の最後に2番目のアクションをディスパッチするだけです。私は `Reduxの-thunk`を使用する場合

function getBookings() { 
    return (
    RequestHelper.fetchEntities(Routes.bookings.all, {}, queryParams) 
     .then(res => dispatch(getBookingsSuccess(res)); 
) 
} 

... 
function getBookingsSuccess(data) { 
    dispatch(showSuccess()); 
} 
+0

つまり、私は私の既存のpromiseMiddlewareを削除する必要がありますか?私がいない場合、私はアクションクリエイターの中で次のものをどうやってつなぐべきですか?私の通常の動作に '.then 'を加えることはうまくいきません。 'return {type:FETCH、promise:request.get(...)[。then(...)]}'。どちらも私はサーバー上で見ることができる要求を行うが、私のアプリは失敗します。 – index

+1

私はこれを達成するためにサンクを使用し、learened。ありがとう! – index

関連する問題