Ich arbeite an einer Webanwendung, die React with Redux verwendet. Ich habe eine ähnliche Nachricht auf dem Redux-Thunk-Github gepostet, aber ich denke, dass dies möglicherweise ein allgemeineres Problem mit der Redux-Middleware ist. Ich verwende derzeit Redux-Thunk auf eine Weise, die dem hier gefundenen Beispiel sehr ähnlich ist:
http://redux.js.org/docs/advanced/ExampleRedditAPI.html
Beim Ausführen meiner App wird in Chrome der folgende Fehler angezeigt:
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
Hier ist ein Link zu meinem Projekt:
https://github.com/jbri7357/redux-sample-app
Ich würde sagen, dass es aufgrund ihres Nutzungsgrades sehr unwahrscheinlich ist, dass es sich um ein Problem mit Redux oder Redux Thunk handelt, und viel wahrscheinlicher, dass es sich um einen subtilen Fehler im Code der App handelt.
Es ist schwer, allein von der Quelle aus zu diagnostizieren. Wenn Sie ein Projekt veröffentlichen könnten, das das Problem reproduziert, wäre dies hilfreich.
Das Problem ist hier :
const mapDispatchToProps = (dispatch) => {
return dispatch;
}
Genau wie mapStateToProps
soll mapDispatchToProps
ein Objekt mit Requisiten zurückgeben .
Wenn Sie eine Funktion connect()
, ruft mapDispatchToProps()
(dies ist nützlich für das Auswendiglernen pro Instanz). Dies ist jedoch für Ihr Problem nicht relevant.
In Ihrem Fall wollten Sie {dispatch}
(ein Objekt) anstelle von dispatch
(eine Funktion) zurückgeben:
const mapDispatchToProps = (dispatch) => {
// return dispatch;
return {dispatch};
}
Das wird das Problem beheben. Übrigens ist dies das Standardverhalten, wenn Sie mapDispatchToProps
nicht angeben. Sie können es also genauso gut vollständig löschen und überhaupt nicht an connect()
.
Ich hoffe das hilft!
Vielen Dank für Ihre Hilfe und die gründliche Erklärung, die Sie gegeben haben!
Hilfreichster Kommentar
Das Problem ist hier :
Genau wie
mapStateToProps
sollmapDispatchToProps
ein Objekt mit Requisiten zurückgeben .Wenn Sie eine Funktion
connect()
, ruftmapDispatchToProps()
(dies ist nützlich für das Auswendiglernen pro Instanz). Dies ist jedoch für Ihr Problem nicht relevant.In Ihrem Fall wollten Sie
{dispatch}
(ein Objekt) anstelle vondispatch
(eine Funktion) zurückgeben:Das wird das Problem beheben. Übrigens ist dies das Standardverhalten, wenn Sie
mapDispatchToProps
nicht angeben. Sie können es also genauso gut vollständig löschen und überhaupt nicht anconnect()
.Ich hoffe das hilft!