Teleports
Componente que nos proporciona vue, que me permite inyectar secciones de componentes (templates) en otros elementos del DOM como el body. sintaxis <teleport> este debe envolver la seccion que quiero inyectar en algun elemento del DOM.
Archivo App.vue
<template>
<Modal />
</template>
<script>
import Modal from "./components/Modal.vue";
export default {
name: "App",
components: { Modal },
data() {
return {
show: false,
};
},
};
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s ease;
}
</style>
++Archivo Modal.vue ++
<template>
<div>
<button @click="toggle">Modal</button>
<teleport to="body">
<div v-show="show" class="modal">
<h2>Titulo</h2>
<p>Esto es solo simple texto en un parrafo</p>
<button @click="toggle">cerrar</button>
</div>
</teleport>
</div>
</template>
<script>
export default {
data() {
return {
show: false,
};
},
methods: {
toggle() {
this.show = !this.show;
},
},
};
</script>
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?