在没有意外递归的情况下得到React“超出最大更新深度”是否合理?

问题描述 投票:0回答:2

我正在编写一个 Cesium/Resium 应用程序,其中包含约 12000 个可点击的动画点。 我收到了 React 警告

Maximum update depth exceeded
。 当有 <5000 points, there's no warning, but somewhere in the 7-8000 range, I tend to see this warning. When debugging in the browser, my call stack is a lot of
recursivelyTraverseMutationEffects
后跟很多
postMessage (async)

我已经消除了该警告的两个来源,即“愚蠢的递归”。我有一个 useEffect正在更新其触发器。

此警告是否表明应用程序需要优化,或者表明发生了一些愚蠢的递归渲染?

javascript reactjs react-hooks cesiumjs resium
2个回答
0
投票

根据完整的错误消息,此错误意味着

至少完成了
    不必要的工作
  • ,使你的应用程序非常缓慢,或者 React
  • 将在出现此错误时停止
  • 其工作,因此您的应用程序可能会损坏或内容丢失。

0
投票
是的。

在没有意外递归的情况下,获得 React“超出最大更新深度”是合理的。 我们尝试了渲染大小并使实体变得非常小,现在我们可以在遇到 Maximum update depth exceeded 警告之前显示更多实体。

当我们的应用程序在浏览器中执行其他操作时,Cesium/Resium 很难渲染如此多的像素。
堆栈最终变得太高,因为我们要求太多,而不是因为我们导致了糟糕的更新循环。

© www.soinside.com 2019 - 2024. All rights reserved.