Redux: 中间件发生无限递归

创建于 2016-04-01  ·  3评论  ·  资料来源: reduxjs/redux

我正在开发一个将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

question

最有用的评论

问题在这里

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

就像mapStateToPropsmapDispatchToProps应该返回带有props的对象

如果提供函数, connect()将调用该函数以获取特定于实例的mapDispatchToProps() (这对于每个实例的备注很有用)。 不过,这与您的问题无关。

在您的情况下,您打算返回{dispatch} (一个对象)而不是dispatch (一个函数):

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

这样可以解决问题。 顺便说一下,如果您未指定mapDispatchToProps ,则这是默认行为,因此您最好将其完全删除,而不将其传递给connect()

我希望这有帮助!

所有3条评论

我要说的是,考虑到它们的使用水平,Redux或Redux Thunk不太可能成为问题,而更可能是应用程序代码中的一个细微错误。

仅从源头很难诊断。 如果您可以发布一个重现此问题的项目,那将有所帮助。

问题在这里

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

就像mapStateToPropsmapDispatchToProps应该返回带有props的对象

如果提供函数, connect()将调用该函数以获取特定于实例的mapDispatchToProps() (这对于每个实例的备注很有用)。 不过,这与您的问题无关。

在您的情况下,您打算返回{dispatch} (一个对象)而不是dispatch (一个函数):

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

这样可以解决问题。 顺便说一下,如果您未指定mapDispatchToProps ,则这是默认行为,因此您最好将其完全删除,而不将其传递给connect()

我希望这有帮助!

非常感谢您对此提供的帮助以及您提供的详尽说明!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

dmitry-zaets picture dmitry-zaets  ·  3评论

ms88privat picture ms88privat  ·  3评论

wmertens picture wmertens  ·  4评论

ramakay picture ramakay  ·  3评论

ilearnio picture ilearnio  ·  3评论