Custom element 自定义元素:何时设置事件侦听器
自定义元素规范列表 在此,最后一项咨询声明如下: 通常,构造函数应用于设置初始状态和默认值,以及设置事件侦听器,可能还有一个影子根 现在,关于web组件的生命周期,从DOM中删除自定义元素将调用Custom element 自定义元素:何时设置事件侦听器,custom-element,Custom Element,自定义元素规范列表 在此,最后一项咨询声明如下: 通常,构造函数应用于设置初始状态和默认值,以及设置事件侦听器,可能还有一个影子根 现在,关于web组件的生命周期,从DOM中删除自定义元素将调用disconnectedCallbacklifecyclehook。据我所知,这将是删除自定义元素添加的任何事件侦听器的时间点 现在,如果我仍然持有对该元素的引用,并在稍后将其放回DOM中,这将触发connectedCallbacklifecycle挂钩 我的问题是:如果建议在构造函数中设置事件侦听器,而
disconnectedCallback
lifecyclehook。据我所知,这将是删除自定义元素添加的任何事件侦听器的时间点
现在,如果我仍然持有对该元素的引用,并在稍后将其放回DOM中,这将触发connectedCallback
lifecycle挂钩
我的问题是:如果建议在构造函数中设置事件侦听器,而不是在connectedCallback
中设置(适当保护),则重新引入的自定义元素将不会接收其侦听器,这些侦听器以前是由disconnectedCallback
清理的
我觉得构造函数建议中的addeventlisteners(我引用了规范中的内容)与设计的生命周期并不匹配
自定义元素难道就不打算从DOM中删除并在以后重新引入到DOM中吗
关于如何解决这一问题,有人有参考资料吗?关于附加和删除侦听器,是否有某种最佳做法?我倾向于将我的addEventListener
调用放在connectedCallback
中。为什么以前会这样做?该控件不在DOM中,因此无法与之交互
我还将我的removeEventListeners
放入disconnectedCallback
中。有时,当内部DOM很复杂时,我甚至可能会清除内部DOM
我在构造函数中添加了几个组件addEventListener
,但是:
1) 只有当它是为暗影世界
2) 除非我自己不想删除它们,因为当内部DOM被垃圾收集破坏时,它们会被自动清除。
3) 当我正在编写一个简单的测试组件时
但这不是我经常做的事。如果我的组件有可能被添加到DOM中或从DOM中删除,那么我觉得它必须发生在connectedCallback
和disconnectedCallback`中,我倾向于将我的addEventListener
调用放在connectedCallback
中。为什么以前会这样做?该控件不在DOM中,因此无法与之交互
我还将我的removeEventListeners
放入disconnectedCallback
中。有时,当内部DOM很复杂时,我甚至可能会清除内部DOM
我在构造函数中添加了几个组件addEventListener
,但是:
1) 只有当它是为暗影世界
2) 除非我自己不想删除它们,因为当内部DOM被垃圾收集破坏时,它们会被自动清除。
3) 当我正在编写一个简单的测试组件时
但这不是我经常做的事。如果我的组件有可能被添加到DOM中或从DOM中删除,那么我觉得它必须发生在connectedCallback
和disconnectedCallback中`