成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

極速上手 Vue 3—Teleport傳送門組件

開發 前端
teleport 傳送門組件,提供一種簡潔的方式,可以指定它里面的內容的父元素。通俗易懂地講,就是 teleport 中的內容允許我們控制在任意的 DOM 中,使用簡單。

[[431959]]

一、teleport 介紹

teleport 傳送門組件,提供一種簡潔的方式,可以指定它里面的內容的父元素。通俗易懂地講,就是 teleport 中的內容允許我們控制在任意的 DOM 中,使用簡單。

使用語法:

  1. <teleport to="body"
  2.  <div> 
  3.   需要創建的內容 
  4.  </div>   
  5. </teleport> 

to 屬性是指定 teleport 中的內容加入的 DOM 元素。可以是標簽名,也可以是 id 或類名。

  1. //標簽名  。上述實例就是加入body元素內,使用的是標簽名。 
  2. <teleport to="body"></teleport> 
  3.  
  4. //類名。如:to=".className" 
  5. <teleport to=".className"></teleport> 
  6.  
  7. //id名 
  8. <teleport to="#idName"></teleport> 

 

1.1、多個 teleport 使用

多個 teleport 傳送門組件可以將內容都掛載到一個目標上,多個 teleport 組件內容就是兄弟節點,先掛載的在前面,后掛載的在后面。

使用如下:

  1. <teleport to="body"
  2.  <div class="first"
  3.   第一個掛載元素 
  4.  </div>   
  5. </teleport> 
  6. <teleport to="body"
  7.  <div class="second"
  8.   第二個掛載元素 
  9.  </div>   
  10. </teleport> 

運行結果如圖:

極速上手 VUE 3——teleport傳送門組件

上邊的實例等價于:

  1. <teleport to="body"
  2.  <div class="first"
  3.   第一個掛載元素 
  4.  </div> 
  5.  <div class="second"
  6.   第二個掛載元素 
  7.  </div> 
  8. </teleport> 

二、為什么使用 teleport

使用 vue 開發時,都是多個組件之間不斷地嵌套,處理元素的樣式或者層級的時候就會變得困難。如我們需要添加一個 modal 模態框或 toast 提示框,如果我們把這樣的框可以從 vue 組件中剝離出來,我們樣式和層級設置起來會更加簡便。

有些同學會想,這直接放到 index.html 中不就好了嗎?另外 modal 、toast 元素需要使用 vue 組件的狀態值,通過狀態控制 modal、toast 的隱藏顯示。如果直接放入 index.html 則狀態控制就復雜了。

所以 teleport 傳送門組件就派上用場了。有點像“哆啦A夢”的任意門,可以把元素傳送到任意的元素內。同時還可以使用 vue 組件內的狀態值控制它。

三、teleport 應用

使用 vite + vue 3 創建的項目,具體如何創建項目請查看《什么,你還使用 webpack?別人都在用 vite 搭建項目了》文章。

vue 3 的項目創建完成之后,找到 index.htm 文件,添加:

  1. <div id="newModal"></div> 

組件文件內,添加 teleport 組件:

  1. <button @click="showModal" class="btn">打開 modal </button> 
  2. <!-- to 屬性就是目標位置 --> 
  3. <teleport to="#newModal"
  4.  <div v-if="visible"
  5.   <div >我是一個 Modal 框</div> 
  6.   </div> 
  7. </teleport> 

運行結果,我們發現使用的 teleport 組件,通過 to 屬性,將內容傳送到<div id="newModal"></div>內,該元素與<div id="app"></div>同級。此時 teleport 中的元素隱藏顯示完全由 vue 組件內的狀態值決定。

四、初學者容易遇到的坑

有些同學在自己的項目內,直接引入了 teleport 傳送門組件,運行以后發現該組件原樣輸出了,并沒有被解析,同時還會報錯。

錯誤信息如下:

極速上手 VUE 3——teleport傳送門組件

vue.runtime.esm.js?2b0e:619 [Vue warn]: Unknown custom element: <teleport> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

然后就在網上各種查解決辦法,最后發現壓根找不到!

根本原因是你使用的還是 vue2,不是 vue3。有些同學會把 腳手架 vue-cli 3 創建的項目,當作是 vue3 。vue-cli 2 和 vue-cli 3 創建項目與是否是 vue3 沒有必然聯系的。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2012-03-11 15:20:36

Android

2020-12-01 08:34:31

Vue3組件實踐

2024-10-24 09:18:45

2023-08-28 00:24:59

圖像場景

2017-07-28 15:57:57

小米

2024-01-08 00:25:43

AI微軟PC

2022-08-10 10:00:58

AR傳送門

2023-11-29 09:05:59

Vue 3場景

2023-05-22 09:11:00

AI

2021-11-15 08:16:05

Vue 技巧 開發工具

2021-03-31 08:01:50

Vue3 Vue2 Vue3 Telepo

2021-05-12 10:25:29

開發技能代碼

2020-10-25 18:43:20

VueTypeScript前端

2021-09-29 11:33:19

異步組件Vue 3

2020-11-06 08:54:43

Vue 3.0函數代碼

2022-06-21 12:09:18

Vue差異

2024-01-09 08:34:56

Vue3.js組件通信

2021-05-18 07:51:37

Suspense組件Vue3

2022-07-29 11:03:47

VueUni-app
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本五月婷婷 | 中文字幕在线观看一区 | 激情久久网 | 99av成人精品国语自产拍 | 久久精品亚洲 | 国产精品久久久久久久久免费相片 | 国产在线中文字幕 | av一区在线观看 | 羞视频在线观看 | 黄免费在线| 欧洲一级黄 | 伊人电影院av| 在线天堂免费中文字幕视频 | 亚洲 91| 狠狠干美女 | 亚洲精品一区二区三区免 | 在线免费激情视频 | 视频一区二区在线观看 | 色婷婷综合久久久中字幕精品久久 | 国产日韩欧美激情 | 久久国产精品一区二区三区 | 男女羞羞视频在线 | 国产精品日韩欧美一区二区三区 | 中文字幕 亚洲一区 | 欧美黑人一区 | 欧美一级网站 | 美女久久久久 | 亚洲一一在线 | 成人在线电影网站 | 殴美黄色录像 | 久久精品色视频 | 春色av| 波多野吉衣在线播放 | 国产电影一区二区在线观看 | 射久久| 精品国产一区二区三区性色av | 秋霞电影一区二区三区 | 91久色| 青青草精品 | 久草在线青青草 | 日韩中文字幕 |