Utilizamos cookies para ajudar você a navegar com eficiência e executar certas funções. Você encontrará informações detalhadas sobre todos os cookies sob cada categoria de consentimento abaixo.
Os cookies que são classificados com a marcação “Necessário” são armazenados em seu navegador, pois são essenciais para possibilitar o uso de funcionalidades básicas do site....
Os cookies necessários são cruciais para as funções básicas do site e o site não funcionará como pretendido sem eles.
Esses cookies não armazenam nenhum dado pessoalmente identificável.
Cookies funcionais ajudam a executar certas funcionalidades, como compartilhar o conteúdo do site em plataformas de mídia social, coletar feedbacks e outros recursos de terceiros.
Cookies analíticos são usados para entender como os visitantes interagem com o site. Esses cookies ajudam a fornecer informações sobre métricas o número de visitantes, taxa de rejeição, fonte de tráfego, etc.
Os cookies de desempenho são usados para entender e analisar os principais índices de desempenho do site, o que ajuda a oferecer uma melhor experiência do usuário para os visitantes.
Os cookies de anúncios são usados para entregar aos visitantes anúncios personalizados com base nas páginas que visitaram antes e analisar a eficácia da campanha publicitária.
No desenvolvimento com Vue.js, é comum precisar compartilhar dados entre componentes. Saber como fazer isso de forma eficiente é essencial para criar aplicações dinâmicas e organizadas. Vamos entender como passar variáveis do componente pai para o filho e vice-versa!
O método mais comum de compartilhar dados é usando props.
Exemplo:
No componente pai, você define um dado:
<!-- Componente Pai -->
<template>
<div>
<Picture :fotoUsuario="foto" :nomeUsuario="nome" />
</div>
</template>
<script>
import Picture from './Picture.vue';
export default {
name: 'ParentComponent',
components: { Picture },
data() {
return {
foto: '/img/user_001.png',
nome: 'Geovani Assis'
};
}
};
</script>
No componente filho, você recebe as variáveis como props:
<!-- Componente Filho -->
<template>
<div>
<img :src="fotoUsuario" :alt="nomeUsuario" />
</div>
</template>
<script>
export default {
name: 'Picture',
props: {
fotoUsuario: String,
nomeUsuario: String
}
};
</script>
Para enviar dados de um componente filho para o pai, utilizamos o método $emit.
Exemplo:
No componente filho:
<template>
<button @click="enviarDados">Enviar Dados</button>
</template>
<script>
export default {
name: 'ChildComponent',
methods: {
enviarDados() {
this.$emit('dadosEnviados', 'Mensagem do filho');
}
}
};
</script>
No componente pai, você escuta o evento e manipula os dados:
<template>
<div>
<ChildComponent @dadosEnviados="receberDados" />
<p>{{ mensagem }}</p>
</div>
</template>
<script>
import ChildComponent from './ChildComponent.vue';
export default {
name: 'ParentComponent',
components: { ChildComponent },
data() {
return {
mensagem: ''
};
},
methods: {
receberDados(mensagem) {
this.mensagem = mensagem;
}
}
};
</script>
Quando você precisa compartilhar dados entre múltiplos componentes sem relação direta, considere usar um estado global como Vuex ou Pinia.
O Vue.js oferece várias formas de passar variáveis entre componentes, cada uma ideal para diferentes situações. Usar props e $emit é perfeito para comunicação direta entre pai e filho. Para casos mais complexos, uma abordagem com armazenamento global pode ser a melhor escolha.
Gostou do conteúdo? Explore mais dicas e tutoriais no meu Blog e siga-me nas redes sociais para mais insights sobre desenvolvimento web!