2016-03-22 22 views
8

Reduxミドルウェアのディスパッチとネクストの違いは何ですか?Reduxミドルウェアのディスパッチとネクストの違いは何ですか?

export default function sampleMiddleware(store) { 
 
    return next => action => { 
 
    store.dispatch(action) 
 
    next(action) 
 
    } 
 
}

+0

ここにはかなり良いドキュメントがあります:http://redux.js.org/docs/advanced/Middleware.htmlあなたに混乱を招くような特定のものがありますか? –

答えて

10

発送は、新しいアクションを開始し、それがミドルウェアの完全なチェーンを通過します。

次 - 現在のアクションをチェーン内の次のミドルウェアに送ります。

+0

ミドルウェアの「完全な」チェーンを通過することは何を意味しますか?それは#applyMiddlewareのようなものから最終的に得られるアクションですが、#nextはアクションが変更されている現在のポイントを返しますか? – mangocaptain

+0

@mangocaptain、ミドルウェアの中で理解しているように、 'next'は次のミドルウェア上を移動しますが、' store.dispatch'はミドルウェアパイプラインの開始時に与えられた動作を行います。もしそうなら、 'store.dispatch'を使って無限ループを作ることができますが、' next'を使うことはできません。 –

+0

別のミドルウェアがなければ、減速機に行くということです... –

1
createStore(reducer, 
applyMiddleware(
middlewareA, 
middlewareB, 
middlewareC 
) 
); 

middlewareB以内(アクション)、次を呼び出すと、middlewareCに を渡されるアクションと、その後減速の原因となります。ミドルウェアB内にディスパッチ(アクション) を呼び出すと、アクションはミドルウェアA、 、次にミドルウェアB、ミドルウェアC、最後に減速機 がミドルウェアBに戻されます。 dispatch() を複数回呼び出すことは、一般的かつ有効な方法です。 next()は複数回呼び出された でもかまいませんが、 がnext()に渡されると、現在のミドルをスキップします( の場合、ロギングミドルウェアをスキップする可能性があります)。

関連する問題