【问题标题】:Maximum update depth exceeded React when using Grommet Chart component使用 Grommet Chart 组件时超过最大更新深度
【发布时间】:2022-01-13 15:17:12
【问题描述】:

我收到以下错误:

未捕获的错误:超出最大更新深度。当组件在 componentWillUpdate 或 componentDidUpdate 中重复调用 setState 时,可能会发生这种情况。 React 限制了嵌套更新的数量以防止无限循环。

接着是:

上述错误发生在“图表”组件中

我对 Chart 组件(来自索环组件库)的唯一使用来自这段代码:

import {Chart} from 'grommet';


const WaveForm = (props:any):JSX.Element => { 
    
    const size= props.waveForm.length
    const color = props.isRecording?"recording":props.isPrimed?"primed":"brand";   

    return (
            <Chart
            bounds={[[0,Math.max(1000,size)], [-25,25]]}
            values= {props.waveForm.map((e:number,i:number) => ({value:[i, e, -e]}))}
            size={{"width": "fill",height:"75%"}} 
            round={true}
            color={color}
            thickness="hair"
            />
    
    );
  }

export default WaveForm;

我一生都无法理解为什么这会导致无休止的重新渲染。任何帮助将不胜感激。

【问题讨论】:

  • 如果您返回null 而不是Chart,问题会消失吗?如果是这样,请尝试删除所有道具并查看是否可以修复错误。如果是这样,请一一移除道具,直到您确定哪个道具损坏了。
  • 感谢我遵循了这个想法。我发现如果我将大小设置为: size={{"width": "100%",height:"75%"}} 而不是 {{"width": "fill",height:"75%"}}那么我不会崩溃。
  • 听起来可能是索环的错误和/或不支持“填充”。可能值得filing an issue,因为即使不支持“填充”,我也希望它能够更优雅地失败。

标签: javascript reactjs grommet


【解决方案1】:

问题似乎是由于索环图表手柄“填充”的问题。 改变

size={{"width": "fill",height:"75%"}}

size={{"width": "100%",height:"75%"}}

修复了问题

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 1970-01-01
    • 2019-06-20
    • 2021-07-12
    • 2019-04-03
    • 2019-02-14
    • 2019-07-17
    • 2019-12-13
    • 2019-05-28
    相关资源
    最近更新 更多