Actuellement, bindActionCreators
accepte une seule fonction ou un objet de fonctions. Il serait utile qu'il accepte également un tableau, pour aider ce modèle de code :
import * as ac from './actionCreators';
// later in file...
const [doThis, doSomethingElse, doAnotherThing] = bindActionCreators(
[ac.doThis, ac.doSomethingElse, ac.doAnotherThing
], dispatch);
// ...
J'aime spécifier explicitement les noms de mes créateurs car toute erreur est détectée immédiatement par eslint-plugin-import/namespace comme une erreur.
Je pense que c'est le changement nécessaire:
diff --git a/src/bindActionCreators.js b/src/bindActionCreators.js
index e70e270..6050c32 100644
--- a/src/bindActionCreators.js
+++ b/src/bindActionCreators.js
@@ -28,6 +28,10 @@ export default function bindActionCreators(actionCreators, dispatch) {
return bindActionCreator(actionCreators, dispatch)
}
+ if (Array.isArray(actionCreators)) {
+ return actionCreators.map(ac => bindActionCreator(ac, dispatch));
+ }
+
if (typeof actionCreators !== 'object' || actionCreators === null) {
throw new Error(
`bindActionCreators expected an object or a function, instead received ${actionCreators === null ? 'null' : typeof actionCreators}. ` +
Je pense que rendre bindActionCreator
plus polymorphe serait trop, que diriez-vous de simplement créer une fonction d'emballage qui le fasse pour vous ?
function mapBindActionCreators(actions, dispatch) {
return actions.map(action => bindActionCreator(action, dispatch)
}
Si vous en avez un tableau, vous pouvez reduce()
le tableau dans un objet et le passer à bindActionCreator
Oui, je pense que nous aimerions éviter de prendre en charge toutes les permutations possibles ici.
Commentaire le plus utile
Je pense que rendre
bindActionCreator
plus polymorphe serait trop, que diriez-vous de simplement créer une fonction d'emballage qui le fasse pour vous ?