66
Vue 3 學習之旅
進階元件
Day 66: 深入 Teleport 元件
·6 分鐘閱讀·進階元件
摘要
<Teleport>
是一個內建元件,它能將其包裹的內容,「傳送」到當前元件 DOM 結構之外的另一個指定位置進行渲染。
定義與說明
<Teleport>
接收一個 to 屬性,其值可以是一個 CSS 選擇器字串或一個真實的 DOM 節點。它包裹的內容將被渲染為該目標節點的子元素。這對於處理需要脫離父元件 CSS 限制的 UI(如模態框、提示框、下拉選單)非常有用。
實作範例
Vue SFC
<script setup>
import { ref } from 'vue';
const showModal = ref(false);
</script>
<template>
<button @click="showModal = true">顯示模態框</button>
<!-- 這段內容的 HTML 結構會被渲染到 <body> 標籤下 -->
<Teleport to="body">
<div v-if="showModal" class="modal">
<p>這是一個模態框!</p>
<button @click="showModal = false">關閉</button>
</div>
</Teleport>
</template>
結論
<Teleport>
以一種乾淨、宣告式的方式,優雅地解決了長期困擾前端的 z-index 和 overflow 樣式問題,讓建構彈出式 UI 變得前所未有的簡單。
Teleport 模態框 DOM 操作