Redux: العودية اللانهائية التي تحدث مع البرامج الوسيطة

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

أنا أعمل على تطبيق ويب يستخدم React مع Redux. لقد قمت بنشر رسالة مماثلة على موقع redux-thunk Github ، لكنني أعتقد أن هذا قد يكون مشكلة عامة مع برنامج Redux الوسيطة. أستخدم حاليًا Redux-Thunk بطريقة مشابهة جدًا للمثال الموجود هنا:
http://redux.js.org/docs/advanced/ExampleRedditAPI.html

عند تشغيل تطبيقي ، أرى الخطأ التالي في Chrome:

Uncaught RangeError: Maximum call stack size exceeded
(anonymous function) @ index.js:10
dispatch @ applyMiddleware.js:44
(anonymous function) @ index.js:12
dispatch @ applyMiddleware.js:44
(anonymous function) @ index.js:12
dispatch @ applyMiddleware.js:44
(anonymous function) @ index.js:12
dispatch @ applyMiddleware.js:44

هذا رابط لمشروعي:
https://github.com/jbri7357/redux-sample-app

question

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

القضية هنا :

const mapDispatchToProps = (dispatch) => {
  return dispatch;
}

تمامًا مثل mapStateToProps ، من المفترض أن يقوم mapDispatchToProps بإرجاع كائن به أدوات .

إذا قمت بتوفير دالة ، فإن connect() سيستدعي

في حالتك ، كنت تقصد إرجاع {dispatch} (كائن) بدلاً من dispatch (دالة):

const mapDispatchToProps = (dispatch) => {
  // return dispatch;
  return {dispatch};
}

سيؤدي ذلك إلى حل المشكلة. بالمناسبة ، هذا _ هو السلوك الافتراضي إذا لم تحدد mapDispatchToProps ، لذلك يمكنك حذفه تمامًا وعدم تمريره إلى connect() على الإطلاق.

آمل أن يساعد هذا!

ال 3 كومينتر

أود أن أقول أنه نظرًا لمستوى استخدامها ، فمن غير المرجح أن تكون مشكلة مع Redux أو Redux Thunk ، ومن المرجح أن تكون خطأ خفيًا في كود التطبيق.

من الصعب التشخيص من المصدر وحده. إذا كان بإمكانك نشر مشروع يعيد إنتاج المشكلة ، فسيكون ذلك مفيدًا.

القضية هنا :

const mapDispatchToProps = (dispatch) => {
  return dispatch;
}

تمامًا مثل mapStateToProps ، من المفترض أن يقوم mapDispatchToProps بإرجاع كائن به أدوات .

إذا قمت بتوفير دالة ، فإن connect() سيستدعي

في حالتك ، كنت تقصد إرجاع {dispatch} (كائن) بدلاً من dispatch (دالة):

const mapDispatchToProps = (dispatch) => {
  // return dispatch;
  return {dispatch};
}

سيؤدي ذلك إلى حل المشكلة. بالمناسبة ، هذا _ هو السلوك الافتراضي إذا لم تحدد mapDispatchToProps ، لذلك يمكنك حذفه تمامًا وعدم تمريره إلى connect() على الإطلاق.

آمل أن يساعد هذا!

شكرًا جزيلاً على مساعدتك في هذا والشرح الشامل الذي قدمته!

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