javascript / expert
Snippet
Vermeidung von Zirkelbezügen mit untrack
In Svelte 5 abonnieren Effekte automatisch alle reaktiven Zustände, die während der Ausführung gelesen werden. Wenn Sie einen Wert lesen müssen, ohne ein Abonnement zu erstellen – oft um Endlosschleifen oder unnötige erneute Durchläufe zu verhindern – isoliert die untrack-Funktion den Ausführungskontext.
snippet.js
1
2
3
4
5
6
7
8
9
let count = $state(0);let status = $state('normal');$effect(() => {if (count > 10) {const currentStatus = untrack(() => status);if (currentStatus !== 'alert') status = 'alert';}});
svelte
Erklärung
1
untrack(() => status)
Liest den Statuswert, ohne ihn zur Abhängigkeitsliste des Effekts hinzuzufügen.
2
status = 'alert'
Aktualisiert den Zustand bedingt basierend auf dem nicht verfolgten Wert, um zirkuläre Updates zu vermeiden.