🛑 Untracking: $.ignore( ) ​
The $.ignore function allows you to read a signal's value inside an effect or a computed signal without creating a dependency.
🛠Function Signature ​
typescript
$.ignore(callback: Function): any| Parameter | Type | Required | Description |
|---|---|---|---|
callback | Function | Yes | A function where signals can be read "silently". |
Returns: Whatever the callback function returns.
📖 Usage Patterns ​
1. Preventing Dependency Tracking ​
Normally, reading a signal inside $.effect makes the effect re-run when that signal changes. $.ignore breaks this link.
javascript
const count = $(0);
const logLabel = $("System Log");
$.effect(() => {
// This effect tracks 'count'...
const currentCount = count();
// ...but NOT 'logLabel'.
// Changing 'logLabel' will NOT re-run this effect.
const label = $.ignore(() => logLabel());
console.log(`${label}: ${currentCount}`);
});
count(1); // Console: "System Log: 1" (Triggers re-run)
logLabel("UI"); // Nothing happens in console (Ignored)2. Reading State in Event Handlers ​
Inside complex UI logic, you might want to take a "snapshot" of a signal without triggering a reactive chain.
javascript
const handleClick = () => {
// Accessing state without letting the caller know we touched it
const data = $.ignore(() => mySignal());
process(data);
};3. Avoiding Infinite Loops ​
If you need to write to a signal based on its own value inside an effect (and you aren't using the functional updater), $.ignore prevents the effect from triggering itself.
javascript
$.effect(() => {
const value = someSignal();
if (value > 100) {
// We update the signal, but we ignore the read to avoid a loop
$.ignore(() => someSignal(0));
}
});💡 Why use it? ​
- Performance: Prevents expensive effects from running when non-essential data changes.
- Logic Control: Allows "sampling" a signal at a specific point in time.
- Safety: Essential for complex state orchestrations where circular dependencies might occur.