阅读(3348) (0)

Svelte onDestroy

2023-02-21 15:17:41 更新

要在组件被销毁时运行代码,请使用 ​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>