javascript - 通过连接调度操作我收到错误最大调用堆栈大小超出

标签 javascript html reactjs redux react-redux

https://codesandbox.io/s/zn812n05v4

const mapDispatchToProps = dispatch => {
  console.log("mapDispatchToProps--->", dispatch);
  return {
    fetchHistoryBenchmarkDatafromURL: () => {
      dispatch(showLoading("sectionBar"));
      // dispatch(fetchHistoryBenchmarkDatafromURL());
    }
  };
};

export default reduxForm({
  form: "syncValidation", // a unique identifier for this form
  validate, // <--- validation function given to redux-form
  warn // <--- warning function given to redux-form
})(connect(mapDispatchToProps)(SyncValidationForm));

错误

RangeError: Maximum call stack size exceeded
    at runBatchedUpdates (ReactUpdates.js:150)
    at ReactReconcileTransaction.perform (Transaction.js:143)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:143)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)
    at ReactUpdatesFlushTransaction.close (ReactUpdates.js:47)
    at ReactUpdatesFlushTransaction.closeAll (Transaction.js:209)
    at ReactUpdatesFlushTransaction.perform (Transaction.js:156)
    at ReactUpdatesFlushTransaction.perform (ReactUpdates.js:89)
    at flushBatchedUpdates (ReactUpdates.js:172)

最佳答案

您不应该在渲染过程中调用dispatch。 SyncValidationForm 中的以下行将触发 redux 状态的更改,这将触发重新渲染,这将再次重新执行此行更改状态等。

store.dispatch(showLoading("sectionBar"));

关于javascript - 通过连接调度操作我收到错误最大调用堆栈大小超出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53949132/

相关文章:

javascript - iFrame 嵌套在具有相同 ID 的 iFrame 中

javascript - 如何让我的动画技能栏响应

javascript - 如何: Javascript get file name on click without path and insert it into a new image link?

javascript - 不可变JS : Merging two Lists by values

javascript - 如何在reactjs中设置多个过滤器

javascript - 在 Meteor 中对发布、订阅和数据进行过滤和排序

javascript - PHP 或 JS GET 形式 : How to add a field if checkbox is checked

javascript - JS 验证高亮输入字段红色/绿色

html - 如何 float 不同高度的div?

reactjs - 使用 Express 服务 REACT 组件不起作用(仅呈现 html 文件)