<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 源代码找到更多信息 :)
祝你好运!
如果我使用
在组件内添加一个关键侦听器<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 源代码找到更多信息 :)
祝你好运!