成人免费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-05-12 10:25:29

開發技能代碼

2021-03-31 08:01:50

Vue3 Vue2 Vue3 Telepo

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技術棧公眾號

主站蜘蛛池模板: 欧美无乱码久久久免费午夜一区 | 男女久久久 | 免费观看一级特黄欧美大片 | 精品久久九九 | 国产成人在线播放 | 99热欧美 | 亚洲情综合五月天 | 国产视频中文字幕 | 亚洲视频免费在线观看 | 97伦理电影网 | 久久精品国产99国产精品 | 91精品国产91久久久久游泳池 | 亚洲一区二区三区桃乃木香奈 | 亚洲v日韩v综合v精品v | 日本成年免费网站 | 91高清在线观看 | 国产黄色小视频 | 精品欧美一区二区三区久久久 | 综合九九 | 久久一起草 | 99久久免费精品视频 | 亚洲欧洲一区 | 成人精品啪啪欧美成 | 国产视频一视频二 | 一区二区三区四区在线 | 久久久久国产一区二区三区四区 | 精品一区二区久久 | 国产精品久久久久久久久免费软件 | 亚洲精品一区在线观看 | 中文字幕成人网 | 国产福利资源 | 欧美精品在线视频 | 99精品国自产在线 | 久久久久国色av免费观看性色 | 欧美日韩精品中文字幕 | 国产探花在线观看视频 | 久久99精品久久久 | 一区日韩 | 国产99视频精品免费播放照片 | 欧美精品一区在线 | 久久久性色精品国产免费观看 |