2016-08-16 12 views
0

私はdocsからreactyxミドルウェアについて学び、彼が "実際にミドルウェアチェーン全体を再び動かすだろうか? "つまり、store.dispatch(action)は、ミドルウェアの最後にdispatchが返されますが、next(action)は、ミドルウェア機能の特定の時点でdispatchを指しますか?それはあなたがあなたのミドルウェアの代わりに、次の(行動)から store.dispatch(アクション)を呼び出した場合、 アクションが実際に を含め、再び全体ミドルウェア・チェーンを移動することを確認するために詐欺のビットを行いReact Reduxミドルウェアの#store.dispatch(アクション)vs #next(アクション)

現在のミドルウェア。これは以前に見たように、非同期の ミドルウェアにとって便利です。

+1

[Reduxミドルウェアのディスパッチとネクストの違いは何ですか?](http://stackoverflow.com/questions/36160457/whats-the-difference-between-dispatch-and-next-in-redux-ミドルウェア) –

+0

http://jsfiddle.net/ca73kt2v/ – qwertymk

答えて

2

redux middlewareは、機能を拡張する機能dispatchをパッチする機能です。 next内のmiddlewareの機能は、実際にはstore.dispatchの機能です。あなたはreturn next(action)時にチェーン内のすべての以前のmiddlewaresは、次のミドルウェアに、適用して

function patchStoreToAddLogging(store) { 
    let next = store.dispatch 
    store.dispatch = function dispatchAndLog(action) { 
    console.log('dispatching', action) 
    let result = next(action) 
    console.log('next state', store.getState()) 
    return result 
    } 
} 

は、だから、dispatch関数の結果を返します。

しかし、あなたはstore.dispatch関数を呼び出すときには適用されすべてmiddlewaresとミドルウェア・チェーンから最終dispatchメソッドの戻り値を呼び出します。

+0

次回はパッチを当てていないので、以前のディスパッチ[docs](https://github.com/gaearon/redux-thunk)を呼び出す新しいディスパッチです。 – dmi3y

関連する問題