render_macros: false
Aula 06 - Controle de Fluxo 🔁
Tornando a UI Dinâmica
Agenda de Hoje 📅
- Lógica no Markup: O sinal
# - Condicionais com
{#if} - Alternativas com
{:else} - Loops com
{#each} - A importância das Chaves (Keys)
- Prática: Lista de Tarefas Dinâmica
1. Blocos Lógicos 🧱
- No Svelte, a lógica não usa atributos (como
v-ifou*ngIf). - Usamos blocos que começam com
{#...}e terminam com{/...}.
2. O Bloco {#if} ❓
- Controla se um elemento deve ou não existir no DOM.
3. Else e Else If 🔀
- Podemos criar caminhos alternativos.
{#if nota >= 7}
<p>Aprovado! 🎉</p>
{:else if nota >= 5}
<p>Recuperação 😐</p>
{:else}
<p>Reprovado ❌</p>
{/if}
4. O Bloco {#each} 🔄
- Serve para repetir elementos baseados em um array.
<script>
let frutas = ["Maçã", "Banana", "Uva"];
</script>
<ul>
{#each frutas as fruta}
<li>{fruta}</li>
{/each}
</ul>
4.1 Pegando o Índice (Index)
- O Svelte permite capturar a posição do item.
4.2 Array Vazio
- Podemos mostrar uma mensagem caso a lista não tenha nada.
5. A Importância das Chaves (Keys) 🔑
- Listas que mudam de ordem ou sofrem exclusões precisam de uma "chave" única (ex: ID).
- Isso ajuda o Svelte a saber EXATAMENTE qual elemento atualizar.
6. Performance Comparada 🚀
graph LR
A[Mudança nos Dados] -->|Svelte| B(Atualiza apenas o elemento alterado)
A -->|Outros| C(Recalcula lista inteira no Virtual DOM)
B --> D((Resultado Rápido)) 7. Prática: Galeria de Fotos 📷
- Crie uma lista de objetos
{id, url, legenda}. - Use
{#each}para renderizar as imagens. - Use
{#if}para mostrar um selo "Novo" se a foto for recente.
8. Dicas de Ouro 💡
- Evite colocar lógica complexa (cálculos) dentro do markup.
- Faça o cálculo no
<script>e apenas exiba o resultado. - Use o
{:else}para melhorar a experiência do usuário.
Resumo da Aula ✅
#inicia,:continua,/termina.{#if}para decisões.{#each}para coleções e listas.
Próxima Aula: Eventos e Bindings ⌨️
- Capturando cliques (
on:click). - Capturando teclado.
- Sincronização de inputs com
bind:value.
Dúvidas? 🤔
"Um loop sem chave é como um livro sem páginas numeradas: você se perde fácil."