Redux: solicitação de recurso: permitir que bindActionCreators aceite array

Criado em 10 jun. 2016  ·  3Comentários  ·  Fonte: reduxjs/redux

Atualmente, bindActionCreators aceita uma única função ou um objeto de funções. Seria útil se aceitasse um array também, para auxiliar este padrão de código:

import * as ac from './actionCreators';

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

Eu gosto de especificar os nomes dos meus criadores explicitamente porque quaisquer erros são detectados imediatamente pelo eslint-plugin-import/namespace como um erro.

Acredito que esta seja a mudança necessária:

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

Comentários muito úteis

Acho que deixar bindActionCreator mais polimórfico seria demais, que tal apenas criar uma função de encapsulamento que faça isso para você?

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

Todos 3 comentários

Acho que deixar bindActionCreator mais polimórfico seria demais, que tal apenas criar uma função de encapsulamento que faça isso para você?

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

Se você tiver um array deles, você poderia reduce() o array em um objeto e passar isso para bindActionCreator

Sim, acho que gostaríamos de evitar o suporte a todas as permutações possíveis aqui.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

mickeyreiss-visor picture mickeyreiss-visor  ·  3Comentários

vraa picture vraa  ·  3Comentários

parallelthought picture parallelthought  ·  3Comentários

vslinko picture vslinko  ·  3Comentários

amorphius picture amorphius  ·  3Comentários