gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:44:00 37 4
gpt4 key购买 nike

当某些观察到的元素从 DOM 中删除时,我应该调用 .unobserve用于防止内存泄漏的元素,还是会“自动不被观察”?

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

最佳答案

根据issue csswg-草稿存储库,今天如果您从 DOM 中删除该元素并从 JS 中删除任何引用,Chrome 会自动取消观察该元素。

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

Current Chrome code implicitly unobserves element if there are no JS references to it. This is not captured by the specification.


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

关于javascript - 我应该为删除的元素调用 ResizeObserver.unobserve 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67581868/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com