ResizeObserver 监听元素尺寸变化不生效是怎么回事?
我用 ResizeObserver 监听一个 div 的尺寸变化,但怎么调整窗口大小都没触发回调,是我写错了吗?
元素是动态渲染的,我在 mounted 里初始化的 observer,代码大概这样:
const resizeObserver = new ResizeObserver(entries => {
console.log('尺寸变了', entries[0].contentRect);
});
resizeObserver.observe(document.getElementById('myDiv'));
控制台完全没输出,但元素确实存在而且尺寸会变。是不是得手动触发一次?还是我漏了什么配置?
建议改成这样:
另外记得确认下这个 div 的 display 属性不是 none,不然 ResizeObserver 也不会触发。我之前就被这坑过,debug了好久才发现是样式问题。
如果还是不行,试试延迟观察:
数据库层面倒是和这没关系,不用操心那边的事。主要是前端这些细节容易掉坑里。