コンテンツにスキップ

CORRECT003 · onMount 代わりの $effect

重大度: warning · カテゴリ: correctness

空でない本体が reactive 値を一切読まない $effect / $effect.pre を検出します — $state$derived$props の参照、store 購読、裸の関数呼び出し(foo())のいずれも無いものです。そのような effect はマウント後に一度だけ実行され、再実行されません。コンポーネントの instance スクリプトを静的(CLI)解析します。

何にも反応しない $effect は実質 onMount です。$effect を使うとその意図が曖昧になり、リアクティビティの仕組みを誤用します。onMount なら「マウント時に一度だけ実行する」ことを直接表現できます。

<script>
import { onMount } from 'svelte';
// $effect(() => { element.focus(); }); の代わりに
onMount(() => {
element.focus();
});
</script>