簡介
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