1

如果我使用在组件内添加一个键监听器

<svelte:window on:keydown={handleKeydown}/>

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

4

1 回答 1

4

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

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

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

祝你好运!

于 2020-03-05T13:53:46.553 回答