Custom element 自定义元素:何时设置事件侦听器

Custom element 自定义元素:何时设置事件侦听器,custom-element,Custom Element,自定义元素规范列表 在此,最后一项咨询声明如下: 通常,构造函数应用于设置初始状态和默认值,以及设置事件侦听器,可能还有一个影子根 现在,关于web组件的生命周期,从DOM中删除自定义元素将调用disconnectedCallbacklifecyclehook。据我所知,这将是删除自定义元素添加的任何事件侦听器的时间点 现在,如果我仍然持有对该元素的引用,并在稍后将其放回DOM中,这将触发connectedCallbacklifecycle挂钩 我的问题是:如果建议在构造函数中设置事件侦听器,而

自定义元素规范列表

在此,最后一项咨询声明如下:

通常,构造函数应用于设置初始状态和默认值,以及设置事件侦听器,可能还有一个影子根

现在,关于web组件的生命周期,从DOM中删除自定义元素将调用
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中`