💻 Exemplos: Reatividade Moderna no Svelte 5 com Runes ($state, $derived)
💻 Demonstrações Práticas: Cap 02 — Reatividade Moderna no Svelte 5 com Runes ($state, $derived)
Especialização Frontend com Svelte • Exemplos Executáveis
🗺️ Fluxo Arquitetural da Demonstração
flowchart LR
MUT["Mutação: contador++"] --> STATE["$state() Signal"]
STATE --> DERIVED["$derived(contador * 2)"]
DERIVED --> DOM["Atualização Fina no DOM (Granular)"]
style MUT fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style STATE fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style DERIVED fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style DOM fill:#fce4ec,stroke:#e91e63,stroke-width:2px
📄 Código de Demonstração (src/lib/ContadorRunes.svelte)
<script lang="ts">
let contagem = $state(0);
let dobro = $derived(contagem * 2);
let ehPar = $derived(contagem % 2 === 0);
function incrementar() {
contagem += 1;
}
function zerar() {
contagem = 0;
}
</script>
<div class="box">
<h2>Contador com Runes ($state e $derived)</h2>
<p>Valor atual: <strong>{contagem}</strong></p>
<p>Dobro do valor: <strong>{dobro}</strong></p>
<p>Classificação: <em>{ehPar ? 'Par' : 'Ímpar'}</em></p>
<button onclick={incrementar}>Incrementar (+1)</button>
<button onclick={zerar}>Zerar</button>
</div>
<style>
.box { padding: 1.5rem; background: #fff; border: 1px solid #ddd; }
button { margin-right: 0.5rem; padding: 0.5rem 1rem; cursor: pointer; }
</style>
🚀 Saída Esperada no Terminal / Compilação
Rendered DOM:
Valor atual: 1
Dobro do valor: 2
Classificação: Ímpar