Redux: permintaan fitur: izinkan bindActionCreators menerima array

Dibuat pada 10 Jun 2016  ·  3Komentar  ·  Sumber: reduxjs/redux

Saat ini, bindActionCreators menerima fungsi tunggal atau objek fungsi. Akan berguna jika menerima array juga, untuk membantu pola kode ini:

import * as ac from './actionCreators';

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

Saya suka menentukan nama pencipta saya secara eksplisit karena kesalahan apa pun segera ditangkap oleh eslint-plugin-import/namespace sebagai kesalahan.

Saya percaya ini adalah perubahan yang diperlukan:

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

Komentar yang paling membantu

Saya pikir membuat bindActionCreator lebih polimorfik akan terlalu banyak, bagaimana kalau membuat fungsi pembungkus yang melakukan ini untuk Anda?

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

Semua 3 komentar

Saya pikir membuat bindActionCreator lebih polimorfik akan terlalu banyak, bagaimana kalau membuat fungsi pembungkus yang melakukan ini untuk Anda?

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

Jika Anda memiliki larik, Anda dapat reduce() larik ke dalam objek dan meneruskannya ke bindActionCreator

Ya, saya pikir kami ingin menghindari mendukung setiap kemungkinan permutasi di sini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat