簡介
Teleport 是 Vue 3 新增的功能,它是一個內建元件 <teleport>
,可以讓我們將模板內的 DOM 渲染到指定位置。
Vue 的 Teleport 類似於 React 的 Portals。
使用場景
在開發過程中,常常會使用到 Modal、Alert、Message 等這類視覺上有「跳出」容器感覺的元件。這類元件通常會顯示在最上層,並且使用 position: fixed
定位視窗,還有覆蓋整個視窗的遮罩。
但通常這類元件會放置在某個元件內,那麼就必須要處理定位、層疊樣式、溢出邊界等等問題(例如,父元素若使用了 transform
會導致 position: fixed
失效)。若放置在最外層,資料狀態的傳遞就變的麻煩。
現在你可以使用 <teleport>
將元件渲染到父元件以外的地方。
Teleport 語法
<teleport>
有兩個 prop:
to
(字串)disabled
(布林值,可選)
1. to
to
可以指定將在其中移動 <teleport>
內容的目標元素。
值必須是 有效的查詢選擇器 或 HTML 元素:
|
|
2. disabled
disabled
預設值為 false
,設為 true
可用於禁用 <teleport>
的功能。
應用:
|
|
Modal 元件應用
使用 Teleport 將 .modal
渲染到 <body>
下,就不會受到上層元素的 CSS 影響。
|
|
CodePen Demo:Vue 3.x - Teleport modal