组件范围还是全局?,svelte-3"/>

首页 > 解决方案 > 听众喜欢吗组件范围还是全局?

问题描述

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

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

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

标签: svelte-3

解决方案


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

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

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

祝你好运!


推荐阅读