Вот несколько методов, которые вы можете использовать для реализации телепортации в Vue, а также примеры кода:
- Использование элемента
:
<template>
<button @click="toggleModal">Open Modal</button>
<teleport to="body">
<Modal v-if="showModal" @close="toggleModal" />
</teleport>
</template>
<script>
import Modal from './Modal.vue';
export default {
data() {
return {
showModal: false
};
},
methods: {
toggleModal() {
this.showModal = !this.showModal;
}
},
components: {
Modal
}
};
</script>
В этом примере компонент
телепортируется в элемент body, когда для свойства данных showModal
установлено значение true
. Модальный компонент имеет событие закрытия, которое можно использовать для переключения свойства showModal
.
- Использование метода
teleport
:
<template>
<button @click="toggleTooltip">Toggle Tooltip</button>
<div ref="tooltipContainer"></div>
</template>
<script>
import Tooltip from './Tooltip.vue';
import { createApp, h } from 'vue';
export default {
data() {
return {
showTooltip: false,
tooltipInstance: null
};
},
methods: {
toggleTooltip() {
this.showTooltip = !this.showTooltip;
if (this.showTooltip) {
this.tooltipInstance = createApp({
render: () => h(Tooltip)
}).mount(this.$refs.tooltipContainer);
} else {
this.tooltipInstance.unmount();
this.tooltipInstance = null;
}
}
},
components: {
Tooltip
}
};
</script>
В этом примере метод teleport
из API композиции Vue используется для динамического создания и монтирования компонента
. Подсказка отображается внутри элемента контейнера, на который ссылается ref="tooltipContainer"
. Когда свойство данных showTooltip
переключается, компонент всплывающей подсказки создается или уничтожается соответственно.
Это всего лишь пара примеров того, как можно реализовать телепортацию в Vue.js. Существуют другие методы и библиотеки, которые позволяют достичь аналогичных результатов.