Saya sedang mengerjakan aplikasi web yang menggunakan React with Redux. Saya telah memposting pesan serupa di redux-thunk Github, tetapi saya pikir ini mungkin masalah yang lebih umum dengan middleware Redux. Saat ini saya menggunakan Redux-Thunk dengan cara yang sangat mirip dengan contoh yang ditemukan di sini:
http://redux.js.org/docs/advanced/ExampleRedditAPI.html
Saat menjalankan aplikasi saya, saya melihat kesalahan berikut di 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
Berikut tautan ke proyek saya:
https://github.com/jbri7357/redux-sample-app
Saya akan mengatakan bahwa mengingat tingkat penggunaannya, sangat tidak mungkin menjadi masalah dengan Redux atau Redux Thunk, dan lebih cenderung menjadi kesalahan halus dalam kode aplikasi.
Sulit untuk mendiagnosis dari sumbernya saja. Jika Anda dapat menerbitkan proyek yang mereproduksi masalah, itu akan membantu.
Masalahnya ada di sini :
const mapDispatchToProps = (dispatch) => {
return dispatch;
}
Sama seperti mapStateToProps
, mapDispatchToProps
seharusnya mengembalikan objek dengan props .
Jika Anda menyediakan sebuah fungsi, connect()
akan memanggil fungsi tersebut untuk mendapatkan mapDispatchToProps()
spesifik-instance (ini berguna untuk memoisasi per-instance). Ini tidak relevan dengan masalah Anda.
Dalam kasus Anda, Anda bermaksud mengembalikan {dispatch}
(objek) alih-alih dispatch
(fungsi):
const mapDispatchToProps = (dispatch) => {
// return dispatch;
return {dispatch};
}
Itu akan memperbaiki masalah. Ngomong-ngomong, ini _is_ perilaku default jika Anda tidak menentukan mapDispatchToProps
, jadi sebaiknya Anda menghapusnya sepenuhnya dan tidak meneruskannya ke connect()
sama sekali.
Saya harap ini membantu!
Terima kasih banyak atas bantuan Anda dengan ini dan penjelasan menyeluruh yang Anda berikan!
Komentar yang paling membantu
Masalahnya ada di sini :
Sama seperti
mapStateToProps
,mapDispatchToProps
seharusnya mengembalikan objek dengan props .Jika Anda menyediakan sebuah fungsi,
connect()
akan memanggil fungsi tersebut untuk mendapatkanmapDispatchToProps()
spesifik-instance (ini berguna untuk memoisasi per-instance). Ini tidak relevan dengan masalah Anda.Dalam kasus Anda, Anda bermaksud mengembalikan
{dispatch}
(objek) alih-alihdispatch
(fungsi):Itu akan memperbaiki masalah. Ngomong-ngomong, ini _is_ perilaku default jika Anda tidak menentukan
mapDispatchToProps
, jadi sebaiknya Anda menghapusnya sepenuhnya dan tidak meneruskannya keconnect()
sama sekali.Saya harap ini membantu!