0 Tage Serie
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
javascript
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.