Reatividade e Data Binding ⚛️
Aula 03 - O Coração do Vue.js
🧠 O Problema da Manipulação Manual
- JavaScript Puro (Vanilla):
- Difícil de manter em apps grandes
- Fácil de esquecer de atualizar algum ponto
⚛️ A Solução: Reatividade
- Você muda o dado -> O Vue muda o DOM
- Sistema de Observadores automático
- Foco na Lógica, não na manipulação de tags
📦 Sistema de Referências: ref()
- Usado para valores primitivos (String, Number, Boolean)
- Cria um objeto "wrapper" reativo
🔍 Acessando valores com .value
- No
<script>:contador.value++ - No
<template>:{{ contador }}(desembrulhado automático)
🧱 Objetos Reativos: reactive()
- Ideal para objetos complexos
- Não precisa de
.valueno script
⚖️ ref vs reactive
| Característica | ref() | reactive() |
|---|---|---|
| Primitivos | ✅ Sim | ❌ Não |
| Script Access | .value | Direto |
| Template Access | Direto | Direto |
| Destruturação | ✅ Mantém | ❌ Perde reatividade |
🔗 One-Way Data Binding
- Fluxo única direção: JavaScript -> HTML
- Sincroniza valores de variáveis com o conteúdo das tags
- Diretivas:
{{ }}ev-bind
👨🏫 Interpolação (Mustache)
- Usa chaves duplas
{{ }} - Renderiza texto simples
- Aceita expressões JS simples:
{{ preco * 2 }}
🏷️ v-bind (:)
- Sincroniza atributos HTML dinamicamente
- Usado em
src,href,class,style, etc.
🔄 Two-Way Data Binding
- Fluxo bidirecional: JavaScript <-> HTML
- Comum em formulários (Inputs)
- O usuário digita -> A variável JS muda instantaneamente
🎹 v-model
- A "mágica" do sincronismo
- Combina
v-bindcom escuta de eventos nativa
🛠️ Modificadores do v-model
.trim: Remove espaços extras.number: Converte automaticamente para número.lazy: Atualiza apenas após ochange(perda de foco)
📊 Fluxo de Dados Visual
graph TD
Data[JavaScript State] -- 1-way: v-bind --> UI[Interface HTML]
UI -- 2-way: v-model --> Data ⚠️ Cuidados com a Reatividade
- Não esqueça o
.valueno script (erro comum!) - Evite substituir o objeto inteiro do
reactive - Use
refpara arrays se precisar trocar a referência
🛠️ Computed Properties (intro)
- Dados reativos baseados em outros dados
- Otimizados e cacheados
🏗️ Prática Sugerida
- Criar um contador de cliques
- Criar um input que muda o título da página
- Manipular atributos de estilo dinamicamente
🏁 Resumo da Aula
- Reatividade automatiza atualizações no DOM
refpara simples,reactivepara objetosv-bindleva o dado,v-modeltraz de volta
🏁 Dúvidas?
Obrigado pela atenção! Próxima aula: Diretivas e Renderização.