javascript / expert
Snippet
Feingliedrige Effekt-Optimierung mit Untracked
In Angular Signals verfolgt ein Effekt automatisch jedes Signal, das während seiner Ausführung gelesen wird. Die Verwendung von `untracked` ermöglicht es, den Wert eines Signals zu lesen, ohne ihn zur Abhängigkeitsliste des Effekts hinzuzufügen. Dies ist unerlässlich, um unnötige Neuausführungen oder Endlosschleifen zu verhindern, wenn ein Wert für die Logik benötigt wird, man aber nicht auf dessen Änderungen reagieren möchte.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
import { signal, effect, untracked } from '@angular/core';const count = signal(0);const logFlag = signal(false);effect(() => {console.log(`Count is: ${count()}`);// Accessing logFlag without creating a dependencyconst shouldExtraLog = untracked(() => logFlag());if (shouldExtraLog) {console.info('Extra logging enabled');}});
angular
Erklärung
1
const shouldExtraLog = untracked(() => logFlag());
Liest den Wert von logFlag(), stellt aber sicher, dass der Effekt nicht erneut ausgelöst wird, wenn sich logFlag ändert.
2
effect(() => { ... });
Registriert einen reaktiven Seiteneffekt, der Abhängigkeiten automatisch verfolgt.