繁体   English   中英

我应该为删除的元素调用 ResizeObserver.unobserve 吗?

[英]Should I call ResizeObserver.unobserve for removed elements?

当某些观察到的元素从 DOM 中删除时,我应该为该元素调用.unobserve以防止 memory 泄漏,还是“自动未观察到”?

const ro = new ResizeObserver((entries) => { console.log(entries); });
const el = document.getElementById('foo');
ro.observe(el);
// ... some time later
el.remove();
ro.unobserve(el); // <-- is this needed, or does it happen automatically behind the scenes?

为什么我要问:我正在实现一个观察许多孩子的 React 组件,并正确清理未安装组件的观察者将涉及非平凡的代码,如果它实际上是不需要的,我想避免它。

根据csswg-drafts存储库中的问题,如果您从 DOM 中删除该元素并从 JS 中删除任何引用,Chrome 会自动取消观察该元素。

 let el = document.querySelector("#id"); let ro = new ResizeObserver(); ro.observe(el); setTimeout(_ => { el.remove(); el = null; }

如果没有对它的 JS 引用,当前的 Chrome 代码会隐式地不观察元素。 这没有被规范捕获。

但问题仍然悬而未决...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM