2017-08-30 5 views
6

redux docsに記載されている例では、常にミドルウェアから何かが返されているようです。しかし、私がnext(action)と呼び出すと、何も問題なく戻ります。私はいつもreduxミドルウェアから値を返す必要がありますか?

redux sourceでは、すべてのミドルウェアの戻り値にはdispatchが呼び出されているようです。

これは、すべてのミドルウェアが実行された後にディスパッチを実行するオプションの方法を提供すると私に信じています。

ミドルウェアから常に値を返さなければならないかどうかを確認できる人がいますか?その場合はどうしてですか?

答えて

8

私は実際にtweeted about this just the other dayです。

デフォルトでstore.dispatch()方法はdispatch()周りミドルウェアパイプラインラップので渡されたアクションを返し、各ミドルウェアに途中でパイプラインを通過している値を変更し、バック渡される戻り値を変更することができます。

多くのミドルウェアは、値自体を返すか、戻ってくる戻り値を使用することができます。たとえば、redux-thunkは、あなたのサンク機能から返されたものを返します。これは通常、サンクから約束を返して、dispatch(somePromiseThunk()).then(() => {})をチェーンできるようにするために使用されます。

ミドルウェアがnext(action)を呼び出しても、実際にはnext()から値を返さない場合、これらの機能が中断される可能性があります。具体的な動作は、設定したミドルウェアとその注文方法に依存します。このため

、「正しい」の練習は、それが明示的に戻り値の挙動を変更したい場合を除き、デフォルトですべてのReduxのミドルウェアすべきreturn next(action)ということです。これにより、最高の互換性とミドルウェアを一緒に構成する能力が保証されます。

関連する問題