Svelte onDestroy
要在组件被销毁时运行代码,请使用 onDestroy
。
例如,我们可以在组件初始化时添加一个 setInterval
函数,并在它不再使用时将其清除。这样做可以防止内存泄漏。
<script>
import { onDestroy } from 'svelte';
let seconds = 0;
const interval = setInterval(() => seconds += 1, 1000);
onDestroy(() => clearInterval(interval));
</script>
虽然在组件初始化期间调用生命周期函数很重要,但从哪里调用它们并不重要。因此,如果我们愿意,我们可以将间隔逻辑抽象为 utils.js
中的辅助函数......
import { onDestroy } from 'svelte';
export function onInterval(callback, milliseconds) {
const interval = setInterval(callback, milliseconds);
onDestroy(() => {
clearInterval(interval);
});
}
...并将其导入到我们的组件中:
<script>
import { onInterval } from './utils.js';
let seconds = 0;
onInterval(() => seconds += 1, 1000);
</script>