Redux: demande de fonctionnalité : autoriser les bindActionCreators à accepter le tableau

Créé le 10 juin 2016  ·  3Commentaires  ·  Source: reduxjs/redux

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}. ` +

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 ?

function mapBindActionCreators(actions, dispatch) {
  return actions.map(action => bindActionCreator(action, dispatch)
}

Tous les 3 commentaires

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.

Cette page vous a été utile?
0 / 5 - 0 notes