Estoy trabajando en una aplicación web que utiliza React with Redux. He publicado un mensaje similar en el redux-thunk Github, pero creo que esto podría ser un problema más general con el middleware Redux. Actualmente estoy usando Redux-Thunk de una manera muy similar al ejemplo que se encuentra aquí:
http://redux.js.org/docs/advanced/ExampleRedditAPI.html
Al ejecutar mi aplicación, veo el siguiente error en 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
Aquí hay un enlace a mi proyecto:
https://github.com/jbri7357/redux-sample-app
Yo diría que, dado su nivel de uso, es muy poco probable que sea un problema con Redux o Redux Thunk, y es mucho más probable que sea un error sutil en el código de la aplicación.
Es difícil de diagnosticar solo a partir de la fuente. Si pudiera publicar un proyecto que reproduzca el problema, sería útil.
El problema está aquí :
const mapDispatchToProps = (dispatch) => {
return dispatch;
}
Al igual que mapStateToProps
, se supone que mapDispatchToProps
devuelve un objeto con accesorios .
Si proporciona una función, connect()
llamará a esa función para obtener un mapDispatchToProps()
específico de la instancia (esto es útil para la memorización por instancia). Sin embargo, esto no es relevante para su problema.
En su caso, quería devolver {dispatch}
(un objeto) en lugar de dispatch
(una función):
const mapDispatchToProps = (dispatch) => {
// return dispatch;
return {dispatch};
}
Eso solucionará el problema. Por cierto, este _es_ el comportamiento predeterminado si no especifica mapDispatchToProps
, por lo que también podría eliminarlo por completo y no pasarlo a connect()
en absoluto.
¡Espero que esto ayude!
¡Muchas gracias por su ayuda con esto y la explicación detallada que proporcionó!
Comentario más útil
El problema está aquí :
Al igual que
mapStateToProps
, se supone quemapDispatchToProps
devuelve un objeto con accesorios .Si proporciona una función,
connect()
llamará a esa función para obtener unmapDispatchToProps()
específico de la instancia (esto es útil para la memorización por instancia). Sin embargo, esto no es relevante para su problema.En su caso, quería devolver
{dispatch}
(un objeto) en lugar dedispatch
(una función):Eso solucionará el problema. Por cierto, este _es_ el comportamiento predeterminado si no especifica
mapDispatchToProps
, por lo que también podría eliminarlo por completo y no pasarlo aconnect()
en absoluto.¡Espero que esto ayude!