Skip to content

Teleport

É um recurso introduzido no Vue 3 que permite renderizar um componente ou parte do conteúdo de um componente em um local diferente no DOM, fora da hierarquia de componentes onde ele foi definido. Isso é útil quando você precisa que determinados elementos, como modais, tooltips ou notificações, sejam renderizados fora da árvore principal da aplicação, evitando problemas de estilo e layout.

Como Usar Teleport

O uso de Teleport no Vue 3 é simples e direto. Você envolve o conteúdo que deseja "teleportar" com o componente <Teleport> e especifica o destino no DOM usando o atributo to.

Exemplo Simples de Teleport:

vue
<template>
  <div>
    <h1>Aplicação Principal</h1>
    <Teleport to="body">
      <div class="modal">
        <p>Este conteúdo está fora da árvore de componentes!</p>
      </div>
    </Teleport>
  </div>
</template>

<script setup lang="ts">
// Código Vue 3 com <script setup>
</script>

<style scoped>
.modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: white;
  padding: 2rem;
  border-radius: 8px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
</style>

Explicação:

  • O componente <Teleport> com to="body" instrui o Vue a renderizar o conteúdo envolvido diretamente dentro do elemento <body>, e não dentro do elemento pai no qual ele foi definido.
  • Isso é útil em casos como modais, onde o layout global ou a hierarquia de estilos podem ser importantes para garantir que o modal se posicione corretamente, sem interferir com outros elementos da página.

Casos de Uso Comuns:

  1. Modais: Renderizar modais fora da hierarquia de componentes pode evitar problemas com CSS e garantir que o modal sempre esteja corretamente sobreposto.
  2. Tooltips e Popovers: Teleport permite que tooltips sejam renderizados fora dos limites do componente pai, evitando problemas de overflow ou posicionamento incorreto.
  3. Notificações Globais: Notificações que aparecem globalmente podem ser facilmente gerenciadas com Teleport para garantir que elas não interfiram no layout principal da aplicação.

O Teleport oferece uma maneira poderosa e flexível de gerenciar a renderização de elementos fora da árvore de componentes principal, mantendo o controle sobre o DOM de forma simples e organizada.