🎯 O que é o watchEffect()?
O watchEffect() é um hook poderoso da Composition API que executa reatividade de forma automática e pode ser usado quando você deseja observar efeitos colaterais (side effects) baseados em mudanças reativas.
-
Diferente do
watch(), que é usado para observar valores especÃficos, owatchEffect()observa todos os valores reativos usados dentro da sua função de forma automática. - Ele executa sempre que qualquer uma das dependências internas mudar, o que o torna muito útil para acompanhar mudanças em valores dinâmicos sem a necessidade de especificar as dependências explicitamente.
Como funciona o watchEffect()?
import { ref, watchEffect } from 'vue'
export default {
setup() {
const contador = ref(0)
const nome = ref('Vue')
watchEffect(() => {
console.log(`O contador é: ${contador.value}, o nome é: ${nome.value}`)
})
const incrementar = () => {
contador.value++
}
return { contador, nome, incrementar }
}
}
O que está acontecendo aqui?
-
watchEffect()observa automaticamente todas as dependências reativas dentro da função de callback (no caso,contadorenome). -
Sempre que
contadorounomemudarem, owatchEffectexecutará a função de callback novamente, exibindo no console o valor atualizado de ambos.
📌 Diferença entre watch() e watchEffect()
-
watch(): Reage a valores especÃficos (você escolhe o que quer observar). -
watchEffect(): Reage a todas as dependências reativas dentro da função (não é necessário especificar as dependências).
🧩 Utilizando reactive() com objetos complexos
O reactive() é útil para criar objetos reativos. Quando você usa o reactive(), o Vue automaticamente faz com que todas as propriedades do objeto sejam reativas.
Exemplo com reactive():
import { reactive } from 'vue'
export default {
setup() {
const pessoa = reactive({
nome: 'Lucas',
idade: 23
})
const mudarNome = () => {
pessoa.nome = 'João'
}
return { pessoa, mudarNome }
}
}
O que está acontecendo aqui?
-
pessoaé um objeto reativo, e suas propriedades (nomeeidade) serão automaticamente reativas. -
mudarNome()altera o nome depessoae, por ser reativo, a interface do usuário será atualizada automaticamente.
📌 Como funciona a reatividade com objetos no reactive()?
- Quando você usa
reactive(), todas as propriedades do objeto se tornam reativas. - O Vue não precisa de
.valuepara acessar as propriedades de um objeto reativo — basta acessar diretamente a propriedade, como se fosse um objeto normal.
⚡ Exemplo prático: Contador com reactive() e watchEffect()
import { reactive, watchEffect } from 'vue'
export default {
setup() {
const estado = reactive({
contador: 0,
nome: 'Vue'
})
watchEffect(() => {
console.log(`Contador: ${estado.contador}, Nome: ${estado.nome}`)
})
const incrementar = () => {
estado.contador++
}
return { estado, incrementar }
}
}
Aqui, o estado é reativo, e o watchEffect() monitora todas as mudanças feitas em estado e executa a função toda vez que qualquer propriedade muda.
✅ Conclusão
- O
watchEffect()é útil quando você deseja reagir a todas as dependências reativas automaticamente dentro de uma função. - O
reactive()transforma objetos em reativos, o que significa que suas propriedades também são automaticamente observadas. - Ambos são extremamente úteis para criar componentes e lógica de reatividade complexos de maneira simples e poderosa.
📌 Resumo rápido: watchEffect() e reactive()
| Funcionalidade | watchEffect() |
reactive() |
|---|---|---|
| O que é? | Observa todas as dependências reativas dentro da função. | Torna objetos e arrays reativos. |
| Como funciona? | Executa a função toda vez que qualquer dependência reativa mudar. | Todas as propriedades de um objeto se tornam reativas. |
| Necessita de retorno? | Não, o foco é a execução da função. | Não, você acessa diretamente as propriedades reativas. |
Top comments (0)