我正在开发一个将React与Redux结合使用的Web应用程序。 我已经在使用redux的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
我要说的是,考虑到它们的使用水平,Redux或Redux Thunk不太可能成为问题,而更可能是应用程序代码中的一个细微错误。
仅从源头很难诊断。 如果您可以发布一个重现此问题的项目,那将有所帮助。
问题在这里:
const mapDispatchToProps = (dispatch) => {
return dispatch;
}
就像mapStateToProps
, mapDispatchToProps
应该返回带有props的对象。
如果提供函数, connect()
将调用该函数以获取特定于实例的mapDispatchToProps()
(这对于每个实例的备注很有用)。 不过,这与您的问题无关。
在您的情况下,您打算返回{dispatch}
(一个对象)而不是dispatch
(一个函数):
const mapDispatchToProps = (dispatch) => {
// return dispatch;
return {dispatch};
}
这样可以解决问题。 顺便说一下,如果您未指定mapDispatchToProps
,则这是默认行为,因此您最好将其完全删除,而不将其传递给connect()
。
我希望这有帮助!
非常感谢您对此提供的帮助以及您提供的详尽说明!
最有用的评论
问题在这里:
就像
mapStateToProps
,mapDispatchToProps
应该返回带有props的对象。如果提供函数,
connect()
将调用该函数以获取特定于实例的mapDispatchToProps()
(这对于每个实例的备注很有用)。 不过,这与您的问题无关。在您的情况下,您打算返回
{dispatch}
(一个对象)而不是dispatch
(一个函数):这样可以解决问题。 顺便说一下,如果您未指定
mapDispatchToProps
,则这是默认行为,因此您最好将其完全删除,而不将其传递给connect()
。我希望这有帮助!