Y a-t-il un avantage à utiliser la yield all([])
de redux-saga par rapport à ES6
Intégré à yield []
?
Pour exécuter plusieurs opérations en parallèle, redux-saga suggère:
const result = yield all([
call(fetchData),
put(FETCH_DATA_STARTED),
]);
Mais la même chose peut être accomplie sans la méthode all()
:
const result = yield [
call(fetchData),
put(FETCH_DATA_STARTED),
];
Laquelle est la meilleure et pourquoi?
Il n'y a pas de différence fonctionnelle, comme l'explique Mateusz Burzyński (mainteneur redux-saga) ici :
Sous le capot, ils sont tous les deux identiques,
yield [...effects]
Entraînera cependant un avertissement de dépréciation et vous informera surall
.Ceci a été introduit pour rendre le comportement parallèle explicite et il reflète bien Promise.all
Il est préférable d'utiliser all()
car cela informe le lecteur que nous produisons plus d'un effet ici, mais les diverses utilisations du rendement fonctionneront toujours sans:
produisant un objet aux effets multiples
const { company, profile } = yield {
company: select(getCompany),
profile: select(getUserProfile, userId),
};
produisant un littéral de tableau
yield [
put(userRequestSucceeded(userId)),
put(userReceived(response.data)),
];
produisant un tableau à l'aide d'une carte
yield userIds.map(userId => call(fetchUserDetails, userId));