Redux-sagaのyield all([])
を_ES6
_の組み込み_yield []
_よりも使用する利点はありますか?
複数の操作を並行して実行するには、redux-sagaは以下を提案します。
_const result = yield all([
call(fetchData),
put(FETCH_DATA_STARTED),
]);
_
しかし、all()
メソッドなしでも同じことができます。
_const result = yield [
call(fetchData),
put(FETCH_DATA_STARTED),
];
_
どちらが良いのですか?なぜですか?
MateuszBurzyński(redux-sagaメンテナー)が here を説明するように、機能的な違いはありません。
内部的にはどちらも同じですが、_
yield [...effects]
_を使用すると非推奨の警告が表示され、all
について通知されます。これは、並列動作explicitを作成するために導入され、 Promise.all をうまくミラーリングしています
ここではall()
を使用することをお勧めします。これは、ここで複数の効果を生み出していることを読者に通知していますが、yieldのさまざまな使用法は、それなしでも機能します。
複数の効果を持つオブジェクトを生成する
_const { company, profile } = yield {
company: select(getCompany),
profile: select(getUserProfile, userId),
};
_
配列リテラルを生成する
_yield [
put(userRequestSucceeded(userId)),
put(userReceived(response.data)),
];
_
mapを使用して配列を生成する
_yield userIds.map(userId => call(fetchUserDetails, userId));
_