Aparência
Componentes Básicos com Composition API e TypeScript
Introdução aos Componentes
Em Vue, um componente é uma instância reutilizável com opções predefinidas. Na Composition API, que é uma adição mais recente e funcional ao Vue, componentes são definidos de maneira mais flexível e modular. Usando TypeScript, você ganha em robustez e previsibilidade no desenvolvimento, ajudando a definir claramente as propriedades e os tipos esperados, o que facilita a manutenção e escala do código.
Estrutura de um Componente com Composition API e TypeScript
Um componente típico utilizando Composition API e TypeScript pode ser estruturado da seguinte forma:
vue
<script setup lang="ts">
import { ref } from "vue";
const nome = ref<string>("LG lugar de gente");
const contador = ref<number>(0);
function incrementar() {
contador.value++;
}
</script>
<template>
<div>
<h1>{{ nome }}</h1>
<button @click="incrementar">Clique</button>
<p>{{ contador }}</p>
</div>
</template>
Comunicação Entre Componentes: Props e Events
Props
Props são personalizações que você passa para o componente, permitindo que você inicialize um componente com valores predefinidos ou dinâmicos. Com TypeScript, você pode definir tipos para suas props, garantindo que o componente receba dados adequados.
Exemplo de definição e utilização de props:
vue
<script setup lang="ts">
defineProps<{
mensagem: string;
}>();
</script>
<template>
<div>{{ $props.mensagem }}</div>
</template>
Events
Eventos são a forma do componente filho comunicar-se com seu componente pai. Eles são usados para enviar informações para fora do componente quando algo acontece, como um clique de botão ou a conclusão de uma ação.
Exemplo de emissão de evento em um componente filho:
vue
<script setup lang="ts">
import { ref } from "vue";
const emit = defineEmits<{
(e: "meu-evento", msg: string): void;
}>();
function enviarEvento() {
emit("meu-evento", "dados enviados");
}
</script>
<template>
<button @click="enviarEvento">Enviar</button>
</template>
E no componente pai, você captura esse evento assim:
vue
<script setup lang="ts">
import ComponenteFilho from "./ComponenteFilho.vue";
function tratarEvento(msg: string) {
console.log("Evento recebido com:", msg);
}
</script>
<template>
<ComponenteFilho @meu-evento="tratarEvento" />
</template>
Utilizar a Composition API com TypeScript não apenas organiza e simplifica o código dos componentes no Vue, mas também oferece um controle de tipo superior, tornando o desenvolvimento mais previsível e seguro.