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

Vue 中如何從插槽中發(fā)出數(shù)據(jù)

開發(fā) 測試
代碼部署后可能存在的BUG沒法實時知道,事后為了解決這些BUG,花了大量的時間進行l(wèi)og 調(diào)試,這邊順便給大家推薦一個好用的BUG監(jiān)控工具 Fundebug。

[[336881]]

代碼部署后可能存在的BUG沒法實時知道,事后為了解決這些BUG,花了大量的時間進行l(wèi)og 調(diào)試,這邊順便給大家推薦一個好用的BUG監(jiān)控工具 Fundebug。

我們知道使用作用域插槽可以將數(shù)據(jù)傳遞到插槽中,但是如何從插槽傳回來呢?

將一個方法傳遞到我們的插槽中,然后在插槽中調(diào)用該方法。我信無法發(fā)出事件,因為插槽與父組件共享相同的上下文(或作用域)。

  1. // Parent.vue 
  2. <template> 
  3.   <Child> 
  4.     <template #default="{ clicked }"
  5.       <button @click="clicked"
  6.         Click this button 
  7.       </button> 
  8.     </template> 
  9.   </Child> 
  10. </template> 
  1. // Child.vue 
  2. <template> 
  3.   <div> 
  4.     <!-- 將“handleClick” 作為 “clicked” 傳遞到我們的 slot --> 
  5.     <slot :clicked="handleClick" /> 
  6.   </div> 
  7. </template> 

在本文中,我們將介紹其工作原理,以及:

  • 從插槽到父級的 emit
  • 當(dāng)一個槽與父組件共享作用域時意味著什么
  • 從插槽到祖父組件的 emit
  • 更深入地了解如何使用方法從插槽通訊回來

從插槽到父級的 emit

現(xiàn)在看一下Parent組件的內(nèi)容:

  1. // Parent.vue 
  2. <template> 
  3.   <Child> 
  4.     <button @click=""
  5.       Click this button 
  6.     </button> 
  7.   </Child> 
  8. </template> 

我們在 Child 組件的插槽內(nèi)有一個button 。單擊該按鈕時,我們要在Parent 組件內(nèi)部調(diào)用一個方法。

如果 button 不在插槽中,而是直接在Parent組件的子組件中,則我們可以訪問該組件上的方法:

  1. // Parent.vue 
  2. <template> 
  3.   <Child> 
  4.     <button @click=""
  5.       Click this button 
  6.     </button> 
  7.   </Child> 
  8. </template> 

當(dāng)該 button 組件位于插槽內(nèi)時,也是如此:

  1. / Parent.vue 
  2. <template> 
  3.   <Child> 
  4.     <button @click="handleClick"
  5.       Click this button 
  6.     </button> 
  7.   </Child> 
  8. </template> 

之所以可行,是因為該插槽與 Parent 組件共享相同的作用域。

插槽和模板作用域

模板作用域:模板內(nèi)部的所有內(nèi)容都可以訪問組件上定義的所有內(nèi)容。

這包括所有元素,所有插槽和所有作用域插槽。

因此,無論該按鈕在模板中位于何處,都可以訪問handleClick方法。

乍一看,這可能有點奇怪,這也是為什么插槽很難理解的原因之一。插槽最終渲染為Child 組件的子組件,但它不與Child 組件共享作用域。相反,它充當(dāng)Parent 組件的子組件。

插槽向祖父組件發(fā)送數(shù)據(jù)

如果要從插槽把數(shù)據(jù)發(fā)送到祖父組件,常規(guī)的方式是使用的$emit方法:

  1. // Parent.vue 
  2. <template> 
  3.   <Child> 
  4.     <button @click="$emit('click')"
  5.       Click this button 
  6.     </button> 
  7.   </Child> 
  8. </template> 

因為該插槽與Parent 組件共享相同的模板作用域,所以在此處調(diào)用$emit將從Parent 組件發(fā)出事件。

從插槽發(fā)回子組件

與Child 組件通訊又如何呢?

我們知道如何將數(shù)據(jù)從子節(jié)點傳遞到槽中

  1. // Child.vue 
  2. <template> 
  3.   <div> 
  4.     <slot :data="data" /> 
  5.   </div> 
  6. </template> 

以及如何在作用域內(nèi)的插槽中使用它:

  1. // Parent.vue 
  2. <template> 
  3.   <Child> 
  4.     <template #default="{ data }"
  5.       {{ data }} 
  6.     </template> 
  7.   </Child> 
  8. </template> 

除了傳遞數(shù)據(jù),我們還可以將方法傳遞到作用域插槽中。如果我們以正確的方式連接這些方法,則可以使用它來與Child組件通信:

  1. // Parent.vue 
  2. <template> 
  3.   <Child> 
  4.     <template #default="{ clicked }"
  5.       <button @click="clicked"
  6.         Click this button 
  7.       </button> 
  8.     </template> 
  9.   </Child> 
  10. </template> 
  1. // Child.vue 
  2. <template> 
  3.   <div> 
  4.     <!-- Pass `handleClick` as `clicked` into our slot --> 
  5.     <slot :clicked="handleClick" /> 
  6.   </div> 
  7. </template> 

每當(dāng)單擊按鈕時,就會調(diào)用Child組件中的handleClick方法。

 

作者:Michael Thiessen 譯者:前端小智 來源:medium 原文:https://stackoverflow.com/questions/50942544/emit-event-from-content-in-slot-to-parent/50943093

本文轉(zhuǎn)載自微信公眾號「 大遷世界」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系大遷世界公眾號。

 

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2020-05-25 17:03:47

Vue嵌套插槽開發(fā)

2021-05-08 07:37:32

Vue 命名插槽

2025-03-07 10:10:48

Vue插槽slot

2012-03-16 16:43:51

大數(shù)據(jù)業(yè)務(wù)分析IBM論壇2012

2024-06-03 10:00:51

Vue 3語法插槽

2009-07-20 15:38:31

ASP.NET 2.0發(fā)送電子郵件

2021-09-03 08:23:21

Vue 插槽子組件

2024-03-18 10:15:00

HTTPNode.jsAPI

2021-12-29 07:51:21

Vue3 插件Vue應(yīng)用

2022-11-07 11:16:30

大數(shù)據(jù)數(shù)據(jù)倉庫Hadoop

2023-05-25 14:06:45

ChatGPT人工智能工具

2014-11-04 09:18:33

安全策略安全管理威脅情報

2022-07-15 08:45:07

slotVue3

2021-04-14 07:52:00

Vue 作用域插槽

2023-06-28 15:00:22

CDO數(shù)據(jù)管理

2023-03-29 08:52:58

視覺Vue組件庫

2022-05-10 08:17:03

goroutine泄漏

2023-01-05 16:02:40

Linux揚聲器

2020-11-17 10:50:04

加密貨幣大數(shù)據(jù)分析大數(shù)據(jù)

2010-04-20 10:12:42

OraclePL
點贊
收藏

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

主站蜘蛛池模板: 日韩精品在线看 | 久久久www成人免费精品 | 欧美成人一级 | 精品无码久久久久国产 | 精品国产乱码久久久久久丨区2区 | 九九久久久 | 精品美女久久久 | 久久在线| 午夜精品一区二区三区在线视频 | 在线男人天堂 | 卡通动漫第一页 | 国产高清精品在线 | 黄页网址在线观看 | 国产一区二区影院 | 性色在线| 在线国产精品一区 | 91在线视频播放 | 国产一区二区精品在线 | 亚洲精品久久久一区二区三区 | 毛片免费在线观看 | 国产亚洲精品精品国产亚洲综合 | 一级做a爰片性色毛片16 | 亚洲成人自拍 | 91xxx在线观看 | 亚洲成av人影片在线观看 | 成年女人免费v片 | 久久精品网 | 干干干操操操 | 成人免费毛片在线观看 | 国产欧美日韩综合精品一区二区 | 黄色片免费看 | 精产国产伦理一二三区 | 91精品国产乱码久久久久久 | 欧美日韩国产不卡 | 国产精品成人在线 | 欧美一级小视频 | 99久久精品国产一区二区三区 | 久久国产精品久久 | 欧洲免费毛片 | 欧美国产大片 | 国产精品a久久久久 |