Redux: طلب الميزة: السماح لـ bindActionCreators بقبول المصفوفة

تم إنشاؤها على ١٠ يونيو ٢٠١٦  ·  3تعليقات  ·  مصدر: reduxjs/redux

حاليًا ، يقبل bindActionCreators وظيفة واحدة أو كائن وظائف. سيكون من المفيد إذا قبلت مصفوفة أيضًا ، لمساعدة نمط الكود هذا:

import * as ac from './actionCreators';

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

أود تحديد أسماء المنشئ الخاصة بي بشكل صريح لأن أي أخطاء يتم اكتشافها على الفور بواسطة eslint-plugin-import / namespace كخطأ.

أعتقد أن هذا هو التغيير الضروري:

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

التعليق الأكثر فائدة

أعتقد أن جعل تعدد الأشكال bindActionCreator سيكون أكثر من اللازم ، فماذا عن مجرد إنشاء وظيفة التفاف تقوم بهذا من أجلك؟

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

ال 3 كومينتر

أعتقد أن جعل تعدد الأشكال bindActionCreator سيكون أكثر من اللازم ، فماذا عن مجرد إنشاء وظيفة التفاف تقوم بهذا من أجلك؟

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

إذا كان لديك مصفوفة منها ، فيمكنك reduce() المصفوفة إلى كائن وتمريرها إلى bindActionCreator

نعم ، أعتقد أننا نرغب في تجنب دعم كل تبديل ممكن هنا.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات