javascript / expert
Snippet
Fine-Grained Effect Optimization with Untracked
In Angular Signals, an effect automatically tracks any signal read during its execution. Using `untracked` allows you to read a signal's value without adding it to the effect's dependency list. This is essential for preventing unnecessary re-runs or infinite loops when you need a value for logic but don't want to react to its changes.
snippet.js
javascript
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
Breakdown
1
const shouldExtraLog = untracked(() => logFlag());
Reads the value of logFlag() but ensures the effect won't re-trigger when logFlag changes.
2
effect(() => { ... });
Registers a reactive side-effect that tracks dependencies automatically.