中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue3中teleport新特性的示例分析

發布時間:2021-09-17 09:40:18 來源:億速云 閱讀:190 作者:柒染 欄目:web開發

Vue3中teleport新特性的示例分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Vue鼓勵我們通過將UI和相關行為封裝到組件中來構建UI。我們可以將它們嵌套在另一個內部,來構建一個組成應用程序UI樹。

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

Teleport提供了一種干凈的方法,允許我們控制在DOM中哪個父節點下渲染HTML,而不必求助于全局狀態或將其拆分為兩個組件。

app.component('modal-button', {   template: `     <button @click="modalOpen = true">         Open full screen modal! (With teleport!)     </button>      <teleport to="body">       <div v-if="modalOpen" class="modal">         <div>           I'm a teleported modal!            (My parent is "body")           <button @click="modalOpen = false">             Close           </button>         </div>       </div>     </teleport>   `,   data() {     return {        modalOpen: false     }   } })

使用

與Vue compoents一起使用

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

const app = Vue.createApp({   template: `     <h2>Root instance</h2>     <parent-component />   ` })  app.component('parent-component', {   template: `     <h3>This is a parent component</h3>     <teleport to="#endofbody">       <child-component name="John" />     </teleport>   ` })  app.component('child-component', {   props: ['name'],   template: `     <div>Hello, {{ name }}</div>   ` })

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

這也意味著來自父組件的注入按預期工作,并且子組件將嵌套在Vue Devtools中的父組件之下,部署放在實際內容移動到的位置。

在同一目標上使用多個teleport

一個常見的用例場景是一個可重用的<Modal>組件,他可能同時有多個實例處于活動狀態。對于這種情況,多個<teleport>組件可以將其內容掛載到同一個目標元素。順序將是一個簡單的追加&mdash;&mdash;稍后掛載將位于目標元素中較早的掛載之后。

<teleport to="#modals">   <div>A</div> </teleport> <teleport to="#modals">   <div>B</div> </teleport>  <!-- result--> <div id="modals">   <div>A</div>   <div>B</div> </div>

使用

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

<!-- 正確 --> <teleport to="#some-id" /> <teleport to=".some-class" /> <teleport to="[data-teleport]" />  <!-- 錯誤 --> <teleport to="h2" /> <teleport to="some-string" />

disabled: boolean。此可選屬性可用于禁用<teleport>的功能,這意味著其插槽內容不會移動到任何位置。而是在您在周圍父組件中指定了<teleport>的位置渲染。

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

值得注意的是,這將移動實際的DOM節點,而不是被銷毀和重新創建,而且它還將保持

任何組件實例的活動狀態。所有有狀態的HTML元素(即播放的視頻)都將保持其狀態。

關于Vue3中teleport新特性的示例分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

师宗县| 永嘉县| 双鸭山市| 许昌市| 宣城市| 廊坊市| 晋中市| 八宿县| 天等县| 嵊泗县| 太保市| 广水市| 阿鲁科尔沁旗| 浦东新区| 德钦县| 霍林郭勒市| 盐亭县| 克拉玛依市| 鹤山市| 尼木县| 凤翔县| 英超| 盐池县| 武乡县| 沁源县| 青龙| 汽车| 八宿县| 腾冲县| 胶南市| 汶上县| 静安区| 琼中| 和平县| 奉新县| 商都县| 紫阳县| 方山县| 华坪县| 台安县| 枣庄市|