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

Vue3值得注意的新特性之——teleport

開(kāi)發(fā) 前端
Vue鼓勵(lì)我們通過(guò)將UI和相關(guān)行為封裝到組件中來(lái)構(gòu)建UI。我們可以將它們嵌套在另一個(gè)內(nèi)部,來(lái)構(gòu)建一個(gè)組成應(yīng)用程序UI樹(shù)。

前提

Vue鼓勵(lì)我們通過(guò)將UI和相關(guān)行為封裝到組件中來(lái)構(gòu)建UI。我們可以將它們嵌套在另一個(gè)內(nèi)部,來(lái)構(gòu)建一個(gè)組成應(yīng)用程序UI樹(shù)。

然而,有時(shí)組件模板的一部分邏輯上屬于該組件,而從技術(shù)角度來(lái)看,最好將模板的這一部分移動(dòng)到DOM中Vue app之外的其他位置。

Teleport提供了一種干凈的方法,允許我們控制在DOM中哪個(gè)父節(jié)點(diǎn)下渲染HTML,而不必求助于全局狀態(tài)或?qū)⑵洳鸱譃閮蓚€(gè)組件。

  1. app.component('modal-button', { 
  2.   template: ` 
  3.     <button @click="modalOpen = true"
  4.         Open full screen modal! (With teleport!) 
  5.     </button> 
  6.  
  7.     <teleport to="body"
  8.       <div v-if="modalOpen" class="modal"
  9.         <div> 
  10.           I'm a teleported modal!  
  11.           (My parent is "body"
  12.           <button @click="modalOpen = false"
  13.             Close 
  14.           </button> 
  15.         </div> 
  16.       </div> 
  17.     </teleport> 
  18.   `, 
  19.   data() { 
  20.     return {  
  21.       modalOpen: false 
  22.     } 
  23.   } 
  24. }) 

使用

與Vue compoents一起使用

如果<teleport>包含Vue組件,則它仍將是<teleport>父組件的邏輯子組件:

  1. const app = Vue.createApp({ 
  2.   template: ` 
  3.     <h1>Root instance</h1> 
  4.     <parent-component /> 
  5.   ` 
  6. }) 
  7.  
  8. app.component('parent-component', { 
  9.   template: ` 
  10.     <h2>This is a parent component</h2> 
  11.     <teleport to="#endofbody"
  12.       <child-component name="John" /> 
  13.     </teleport> 
  14.   ` 
  15. }) 
  16.  
  17. app.component('child-component', { 
  18.   props: ['name'], 
  19.   template: ` 
  20.     <div>Hello, {{ name }}</div> 
  21.   ` 
  22. }) 

在這種情況下,即使在不同地方渲染child-compoents,它仍將是parent-component的子集,并將從中接受name prop。

這也意味著來(lái)自父組件的注入按預(yù)期工作,并且子組件將嵌套在Vue Devtools中的父組件之下,部署放在實(shí)際內(nèi)容移動(dòng)到的位置。

在同一目標(biāo)上使用多個(gè)teleport

一個(gè)常見(jiàn)的用例場(chǎng)景是一個(gè)可重用的<Modal>組件,他可能同時(shí)有多個(gè)實(shí)例處于活動(dòng)狀態(tài)。對(duì)于這種情況,多個(gè)<teleport>組件可以將其內(nèi)容掛載到同一個(gè)目標(biāo)元素。順序?qū)⑹且粋€(gè)簡(jiǎn)單的追加——稍后掛載將位于目標(biāo)元素中較早的掛載之后。

  1. <teleport to="#modals"
  2.   <div>A</div> 
  3. </teleport> 
  4. <teleport to="#modals"
  5.   <div>B</div> 
  6. </teleport> 
  7.  
  8. <!-- result--> 
  9. <div id="modals"
  10.   <div>A</div> 
  11.   <div>B</div> 
  12. </div> 

使用

to:String。需要prop,必須是有效的查詢選擇器或HTMLElement(如果在瀏覽器環(huán)境中使用)。指定將在其移動(dòng)<teleport>內(nèi)容的目標(biāo)元素。

  1. <!-- 正確 --> 
  2. <teleport to="#some-id" /> 
  3. <teleport to=".some-class" /> 
  4. <teleport to="[data-teleport]" /> 
  5.  
  6. <!-- 錯(cuò)誤 --> 
  7. <teleport to="h1" /> 
  8. <teleport to="some-string" /> 

disabled: boolean。此可選屬性可用于禁用<teleport>的功能,這意味著其插槽內(nèi)容不會(huì)移動(dòng)到任何位置。而是在您在周?chē)附M件中指定了<teleport>的位置渲染。

  1. <teleport to="#popup" :disabled="displayVideoInline"
  2.   <video src="./my-movie.mp4"
  3. </teleport> 

值得注意的是,這將移動(dòng)實(shí)際的DOM節(jié)點(diǎn),而不是被銷(xiāo)毀和重新創(chuàng)建,而且它還將保持

任何組件實(shí)例的活動(dòng)狀態(tài)。所有有狀態(tài)的HTML元素(即播放的視頻)都將保持其狀態(tài)。

 

責(zé)任編輯:張燕妮 來(lái)源: 今日頭條
相關(guān)推薦

2021-05-12 10:25:53

組件驗(yàn)證漏洞

2015-06-23 15:48:41

Swift 2.0iOS9

2020-12-01 08:34:31

Vue3組件實(shí)踐

2010-07-21 16:28:33

職場(chǎng)

2023-11-29 09:05:59

Vue 3場(chǎng)景

2022-07-14 08:22:48

Computedvue3

2013-09-16 13:18:28

遺留系統(tǒng)系統(tǒng)遷移

2021-03-31 08:01:50

Vue3 Vue2 Vue3 Telepo

2010-11-26 15:05:58

MySQL變量

2021-12-31 07:48:58

Vue3 插件Vue應(yīng)用

2024-10-24 09:18:45

2011-05-12 09:29:54

2017-02-21 13:20:02

SD-WAN軟件定義網(wǎng)絡(luò)廣域網(wǎng)

2015-10-08 09:25:05

比特幣存儲(chǔ)開(kāi)源

2010-03-31 15:52:24

Oracle子查詢

2009-06-15 14:53:00

NetBeans 6.

2021-08-11 08:31:42

前端技術(shù)Vue3

2010-07-12 10:48:21

SQL Server數(shù)

2012-05-28 09:34:33

Linux Mint UbuntOS

2025-04-21 00:05:00

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 97免费在线观看视频 | 亚洲va中文字幕 | 日韩成人一区 | 国产成人精品亚洲日本在线观看 | 精品久久影院 | 天天干夜夜操 | 亚洲国产看片 | 91精品国产自产精品男人的天堂 | 亚洲aⅴ | 九色91视频| 国产一区二区在线视频 | 99久久久国产精品 | 欧美人妇做爰xxxⅹ性高电影 | www成人免费视频 | 欧美色综合一区二区三区 | 国产精品日韩欧美一区二区三区 | 久久久久久免费精品一区二区三区 | 伊人网影院 | 成人精品鲁一区一区二区 | 成人欧美一区二区三区在线播放 | 久久国产精品免费一区二区三区 | 韩国av网站在线观看 | 伊人色综合久久天天五月婷 | 午夜影院在线观看版 | 欧美一区二区三区在线观看视频 | 久久久综合网 | 黄色片免费 | 日日碰狠狠躁久久躁96avv | 精品免费视频 | 久久精品青青大伊人av | 日韩欧美中文字幕在线观看 | av一区二区三区在线观看 | 狠狠ri | 国产亚洲成av人片在线观看桃 | 91精品国产综合久久精品 | 亚洲视频在线看 | 免费黄色片视频 | 色一级片 | 亚洲香蕉在线视频 | 亚洲第一在线视频 | 超碰av免费 |