如果我使用以下方法在组件内添加一个关键侦听器
<svelte:window on:keydown={handleKeydown}/>
Run Code Online (Sandbox Code Playgroud)
根据https://svelte.dev/tutorial/svelte-window,组件被销毁时侦听器是否会被删除?我想确保我不会造成任何类型的内存泄漏。
小智 7
是的,如果你愿意,你可以查看生成的 JS 代码,你会发现:
m(target, anchor) {
dispose = listen(window, "keydown", /*handleKeydown*/ ctx[0]);
},
...
...
d(detaching) {
dispose();
}
Run Code Online (Sandbox Code Playgroud)
m()方法是挂载函数,d()方法是销毁函数。您可以看到监听器被添加到 m() 中,然后在 d() 中被删除。这已被简化,但您可以通过研究 Svelte 源代码来了解更多信息:)
祝你好运!