Efeitos
Nesta página
effect(|| { ... }) registra uma reação: o fechamento roda uma vez ao ser criado
e, depois, novamente sempre que qualquer signal lido dentro dele mudar.
Qualquer chamada a .get() dentro do corpo registra uma dependência
automaticamente — não há lista manual de deps.
Efeitos são ideais para efeitos colaterais: logging, persistência, atualizações de interface — qualquer coisa que precisa espelhar o estado reativo.
Criação do effect, rastreio automático de dependência e re-execução por escrita.
02-effect-tracking.zolo
// Feature: effect — runs once on creation, re-runs when tracked signals change
// Syntax: `effect(|| { ... })`. Any tracked signal read inside the closure
// registers as a dependency of this effect.
// When to use: side effects that must mirror reactive state — DOM
// updates, logging, persistence, derived computations with side effects.
let count = signal(0)
// Initial creation runs the closure once and records `count` as a dep.
let e = effect(|| {
print("count = {count.get()}")
})
// expected: count = 0
// Each set retriggers the effect.
count.set(1)
// expected: count = 1
count.set(2)
// expected: count = 2
// Setting to the same value still triggers (no equality check).
count.set(2)
// expected: count = 2
Veja também