Redux: solicitud de función: permitir que bindActionCreators acepte una matriz

Creado en 10 jun. 2016  ·  3Comentarios  ·  Fuente: reduxjs/redux

Actualmente, bindActionCreators acepta una sola función o un objeto de funciones. Sería útil si también aceptara una matriz, para ayudar a este patrón de código:

import * as ac from './actionCreators';

// later in file...
const [doThis, doSomethingElse, doAnotherThing] = bindActionCreators(
  [ac.doThis, ac.doSomethingElse, ac.doAnotherThing
], dispatch);
// ...

Me gusta especificar los nombres de mis creadores explícitamente porque eslint-plugin-import/namespace detecta inmediatamente cualquier error como un error.

Creo que este es el cambio necesario:

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

Comentario más útil

Creo que hacer que bindActionCreator sea más polimórfico sería demasiado, ¿qué tal crear una función de ajuste que haga esto por ti?

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

Todos 3 comentarios

Creo que hacer que bindActionCreator sea más polimórfico sería demasiado, ¿qué tal crear una función de ajuste que haga esto por ti?

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

Si tiene una matriz de ellos, podría reduce() la matriz en un objeto y pasar eso a bindActionCreator

Sí, creo que nos gustaría evitar admitir todas las permutaciones posibles aquí.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

timdorr picture timdorr  ·  3Comentarios

wmertens picture wmertens  ·  4Comentarios

captbaritone picture captbaritone  ·  3Comentarios

cloudfroster picture cloudfroster  ·  3Comentarios

ms88privat picture ms88privat  ·  3Comentarios