题记:在开发的过程中忽然出现了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>
虽然解决了问题,可是方法很不优雅。有其他解决方案的友友可以打在帖子的评论区,一起讨论一下!!!