<svelte:window on:keydown={handleKeydown}/> 之类的侦听器是组件范围的还是全局的?

Are listeners like <svelte:window on:keydown={handleKeydown}/> component scoped or global?

如果我使用

在组件内添加一个关键侦听器
<svelte:window on:keydown={handleKeydown}/>

根据https://svelte.dev/tutorial/svelte-window,当组件被销毁时监听器是否被移除?我想确定我不会导致任何类型的内存泄漏。

是的,如果你愿意,你可以看看生成的JS代码,你会发现:

m(target, anchor) {
    dispose = listen(window, "keydown", /*handleKeydown*/ ctx[0]);
},
...
...
d(detaching) {
    dispose();
}

m()方法是挂载函数,d()是销毁函数。您可以看到在 m() 中添加了侦听器,然后在 d() 中将其删除。这是简化的,但您可以通过调查 Svelte 源代码找到更多信息 :)

祝你好运!