如果你已经使用了 debounce 函数来限制触发频率,但仍然出现了 "ResizeObserver loop limit exceeded" 错误,那么可能是因为在修改表格高度时,又触发了窗口大小的改变,从而形成了一个死循环。
为了避免这个问题,可以尝试使用 ResizeObserver 来监听表格高度的变化,而不是在窗口大小改变时计算表格高度。例如:
```javascript
const handleResize = () => {
windowHeight.value = $(window).height();
};
onMounted(() => {
getTableData();
window.addEventListener('resize', handleResize);
// 使用 ResizeObserver 监听表格高度的变化
const resizeObserver = new ResizeObserver(() => {
contentH.value = tableRef.value.offsetHeight;
});
resizeObserver.observe(tableRef.value);
});
onUnmounted(() => {
window.removeEventListener('resize', handleResize);
});
```
在上面的代码中,我们使用 ResizeObserver 来监听表格高度的变化,并将其保存到 `contentH` 变量中。这样,在表格高度发生变化时,就不会再次触发窗口大小的改变,从而避免了死循环和 "ResizeObserver loop limit exceeded" 错误。
需要注意的是,由于 ResizeObserver 是一个比较新的 API,可能不支持所有的浏览器。如果需要兼容旧版浏览器,可以考虑使用其他的解决方案,例如 MutationObserver 或定时器等。