Valores Computados
Nesta página
computed(|| { ... }) encapsula uma derivação: o corpo roda na primeira leitura
e fica em cache até que algum signal lido dentro dele mude. Ao contrário do
effect, é preguiçoso — só recalcula quando alguém o lê.
O rastreio é transitivo: um effect que lê um computed passa a depender
de todos os signals que o computed depende. Isso torna seguro compor computeds
em cadeia sem perder reatividade.
doubled recalcula a cada mudança de count; o effect vê os dois de forma sincronizada.
03-computed-derived.zolo
// Feature: computed — a memoized signal derived from other signals
// Syntax: `computed(|| { ... })`. The body is re-run when any signal
// it reads changes. Reads are tracked transitively: an effect that
// reads a computed depends on whatever the computed depends on.
// When to use: derived values that should recompute lazily and be
// shared between effects (full name, total price, formatted string).
let count = signal(0)
let doubled = computed(|| { count.get() * 2 })
let e = effect(|| {
print("count = {count.get()}, doubled = {doubled.get()}")
})
// expected: count = 0, doubled = 0
count.set(5)
// expected: count = 5, doubled = 10
count.set(7)
// expected: count = 7, doubled = 14
// Computed values cache: reading `doubled` twice in one effect run
// re-uses the result — the body only runs when a dep changes.
Desafio
Adicione um terceiro computed chamado label que devolve "par" ou "ímpar" e
inclua-o na impressão do effect.
Veja também