首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致超过最大调用堆栈大小的多个Redux中间件

导致超过最大调用堆栈大小的多个Redux中间件
EN

Stack Overflow用户
提问于 2018-03-17 10:36:30
回答 3查看 869关注 0票数 1

我得到了

代码语言:javascript
复制
Uncaught RangeError: Maximum call stack size exceeded
    at eval (index.js?4bd6:38)
    at Object.dispatch (applyMiddleware.js?6ce6:35)
    at dispatchChildActions (index.js?4bd6:33)
    at eval (index.js?4bd6:39)
    at Object.dispatch (applyMiddleware.js?6ce6:35)
    at dispatchChildActions (index.js?4bd6:33)
    at eval (index.js?4bd6:39)
    at Object.dispatch (applyMiddleware.js?6ce6:35)
    at dispatchChildActions (index.js?4bd6:33)

当我尝试在我的applyMiddleware()中添加redux-batched-actions中间件时

代码语言:javascript
复制
const store = createStore(
  enableBatching(appReducer), // added enableBatching
  composeWithDevTools(
    applyMiddleware(
      batchDispatchMiddleware, // and this
      sagaMiddleware,
      historyMiddleware,
    )
  )
)

怎么了?

EN

回答 3

Stack Overflow用户

发布于 2018-03-19 07:04:16

我花时间给你看了一下源代码。这是个包漏洞。我已经提交了一个pull request

先前的合并导致无限递归,其中非批处理操作被重复调度。我还认为您应该只使用中间件或更高阶的reducer,这取决于您的用例,请参阅ReadMe以获得较小的解释。请尝试修复,并让我知道,因为我没有一个项目目前设置。

希望这能解决你的问题!

票数 3
EN

Stack Overflow用户

发布于 2018-03-17 13:04:37

不确定。

以下是对我有效的代码,也许它会有所帮助:

代码语言:javascript
复制
const composeEnhancers =
  typeof window === 'object' &&
  window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?
    window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
    }) : compose;

const enhancers = composeEnhancers(
  applyMiddleware(ReduxThunk),
  autoRehydrate()
);

const initialState = {};
const store = createStore(
  reducers,
  initialState,
  compose(enhancers)
);
persistStore(store);

ReactDOM.render(
  <Provider store={store}>
    <div>
      <BrowserRouter>
          <Switch>
            <Route exact path="/" component={Home} />
            <Route path="/xxx" component={XXX} />
          </Switch>
          <Footer />
      </Container>
      </BrowserRouter>
    </div>
  </Provider>
  , document.querySelector('#app'));
票数 0
EN

Stack Overflow用户

发布于 2018-04-15 10:02:55

当我忘记用大括号括起我的动作时,我也犯了同样的错误:

代码语言:javascript
复制
return bindActionCreators(...TaskActions, ...UserActions, dispatch)

而不是

代码语言:javascript
复制
return bindActionCreators({...TaskActions, ...UserActions}, dispatch)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49331978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档