2016-07-14 6 views
2

ビデオレッスンでは:https://egghead.io/lessons/javascript-redux-dispatching-actions-asynchronously-with-thunks私たちは独自のサンクを書くことを学ぶので、アクションクリエーターに非同期の&ディスパッチが複数回呼び出すことができます。私はこれを大部分は理解しています。ディスパッチのためにサンクを書くときには、 "next"と "store.dispatch"の違いは何ですか?

const thunk = (store) => (next) => (action) => 
    typeof action === 'function' ? 
    action(store.dispatch) : 
    next(action); 

なぜ1がstore.dispatchnextその逆も使用します。

しかし、私たちは、サンクでstore.dispatchの代わりnextを使用する理由で混乱していますか?私はnextが次のミドルウェアに進むことを理解していますが、次のミドルウェアが最終的にディスパッチを呼び出すと、をnext以上に使用するのはなぜですか?

答えて

3

すでに指摘したように、nextはチェーン内の次のミドルウェアのみを呼び出します。最終的に元のディスパッチ機能を呼び出すことはできますが、チェーン全体を再びトラバースする場合には、それを使用することは適切ではありません。サンクの場合は、チェーン全体を横断したい。

したがって、作業を行いたいミドルウェアを作成してからチェーンを続ける場合は、nextを使用してください。たとえば、ロガーはこれを行います:アクションをログに記録し、nextを呼び出して、結果の状態をログに記録します。チェーン全体をトラバースするコールバックを返すには、store.dispatchを返します。ミドルウェアからnextを戻したいとは思わないでしょう。ミドルウェアの前と後のミドルウェアが分からないと仮定している可能性が高いので、ミドルウェアチェーン外に呼び出す結果は予測できません。

関連する問題