【Ant Design Vue】Table组件出现 ResizeObserver loop limit exceeded 错误的解决记录

1,528 阅读2分钟

题记:在开发的过程中忽然出现了ResizeObserver loop limit exceeded的错误。

1. 问题出现的原因

这个问题描述的是——调整大小的观察者循环次数超出了限制。

我上网百度了出现这个问题的原因,其中有个帖子

antd table resizeobserver loop limit exceeded-掘金 (juejin.cn)

详细分析了这个问题出现的原因和解决方法,我按照这样的思路和解决方案逐个调试,可是都没解决问题。(PS:可能是我的情况和帖子的不一样,可是这帖子真的很有用!推荐!)

之后,我又看到了让我眼前一亮的博客,这里特地码上,有需要的友友可以看原帖

关于使用antd-proTable,报错 ResizeObserver loop limit exceeded - 凡凡0410 - 博客园 (cnblogs.com)

终于找到了问题出现原因——Table组件的scroll属性中设置了横向滚动,即设置了x

2. 解决方法

博客中没有scroll属性的解决方案,所以我自己尝试着解决。

综合设置横向滚动出现问题的原因和第一个帖子分析的原因,我认为是设置了横向滚动后,因为表格头或者列宽的不断变化导致ResizeObserver循环超出限制。

所以我尝试了固定列宽和表格大小的解决方案,没有用,我只能用笨方法(这里称作控制变量法)。因为是开发过程中忽然出现的问题,我还原了问题出现前的“现场”,不断调试,逐个修改和还原可能出现问题的代码,最后!!!找到了一个不知道为什么的成功的解决方案:在声明初始化Table组件的数据源时,设置其初始值为有一个空对象的数组——[{}]

<!-- 指定data数组的初始值为[{}] -->
<!-- let data = reactive([{}]) -->
<a-table
    :dataSource="data"
    :columns="columns"
    :scroll="{ x: 1150, y: 450 }"
></a-table>

虽然解决了问题,可是方法很不优雅。有其他解决方案的友友可以打在帖子的评论区,一起讨论一下!!!