1、前言
顧名思義,爺孫組件是比父子組件通信要更深層次的引用關係(也有稱之為“隔代組件”):
#C組件引入到B元件裡,B元件引進到A元件裡渲染,此時A是C的爺爺等級(可能還有更多層級關係),如果你用props ,只能一級一級傳遞下去,那就太繁瑣了,因此我們需要更直接的溝通方式。
他們之間的關係如下,Grandson.vue 並非直接掛載在Grandfather.vue 下面,他們之間還隔著至少一個Son.vue (可能有多個):
Grandfather.vue └─Son.vue └─Grandson.vue
因為上下級的關係的一致性,爺孫組件通信的方案也適用於父子組件通信,只需要把爺孫關係換成父子關係即可。
2、provide / inject
這個特性有兩個部分:Grandfather.vue 有一個provide 選項來提供數據,Grandson.vue 有一個inject 選項來開始使用這些數據。
Grandfather.vue 透過provide 向Grandson.vue 傳值(可包含定義好的函數)
Grandson.vue 透過inject 向Grandfather .vue 觸發爺爺組件的事件執行
無論組件層次結構有多深,發起provide 的組件都可以作為其所有下級組件的依賴提供者
這一部分的內容變化都特別大,但使用起來其實也很簡單,不用慌,也有相同的地方:
父元件不需要知道哪些子元件使用它provide 的property
#子元件不需要知道inject property 來自哪裡
#另外,要記得一點就是:provide 和inject 綁定並不是可回應的。這是刻意為之的,但如果傳入了一個可監聽的對象,那麼其對象的 property 還是可回應的。
3、發起provide
我們先來回顧一下2.x 的用法:
export default { // 定义好数据 data () { return { tags: [ '中餐', '粤菜', '烧腊' ] } }, // provide出去 provide () { return { tags: this.tags } } }
舊版的provide 用法和data 類似,都是配置為一個返回物件的函數。
3.x 的新版 provide, 和 2.x 的用法差異比較大。
在 3.x , provide 需要導入並在 setup 裡啟用,現在是一個全新的方法。
每次要 provide 一個資料的時候,就要單獨呼叫一次。
每次呼叫的時候,都需要傳入2 個參數:
#參數 | ##類型##說明 | |
---|---|---|
string | 資料的名稱 | |
資料的值 |
export default {
inject: ['tags'],
mounted () {
console.log(this.tags);
}
}
舊版的inject 用法和props 類似,3.x 的新版inject, 和2.x 的用法差異也是比較大。 在 3.x, inject 和 provide 一樣,也是需要先導入然後在 setup 裡啟用,也是一個全新的方法。 每次要 inject 一個資料的時候,就要單獨呼叫一次。
每次呼叫的時候,只需要傳入1 個參數:#key | string | |
---|---|---|
以上是Vue3全域元件通訊之provide/inject源碼分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Netflix在框架選擇上主要考慮性能、可擴展性、開發效率、生態系統、技術債務和維護成本。 1.性能與可擴展性:選擇Java和SpringBoot以高效處理海量數據和高並發請求。 2.開發效率與生態系統:使用React提升前端開發效率,利用其豐富的生態系統。 3.技術債務與維護成本:選擇Node.js構建微服務,降低維護成本和技術債務。

Netflix主要使用React作為前端框架,輔以Vue用於特定功能。 1)React的組件化和虛擬DOM提升了Netflix應用的性能和開發效率。 2)Vue在Netflix的內部工具和小型項目中應用,其靈活性和易用性是關鍵。

Vue.js是一種漸進式JavaScript框架,適用於構建複雜的用戶界面。 1)其核心概念包括響應式數據、組件化和虛擬DOM。 2)實際應用中,可以通過構建Todo應用和集成VueRouter來展示其功能。 3)調試時,建議使用VueDevtools和console.log。 4)性能優化可通過v-if/v-show、列表渲染優化和異步加載組件等實現。

Vue.js適合小型到中型項目,而React更適用於大型、複雜應用。 1.Vue.js的響應式系統通過依賴追踪自動更新DOM,易於管理數據變化。 2.React採用單向數據流,數據從父組件流向子組件,提供明確的數據流向和易於調試的結構。

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應用。 1)Vue.js易於上手,適用於團隊經驗不足或項目規模較小的情況。 2)React的生態系統更豐富,適合有高性能需求和復雜功能需求的項目。

實現 Vue 中 a 標籤跳轉的方法包括:HTML 模板中使用 a 標籤指定 href 屬性。使用 Vue 路由的 router-link 組件。使用 JavaScript 的 this.$router.push() 方法。可通過 query 參數傳遞參數,並在 router 選項中配置路由以進行動態跳轉。

Vue 中實現組件跳轉有以下方法:使用 router-link 和 <router-view> 組件進行超鏈接跳轉,指定 :to 屬性為目標路徑。直接使用 <router-view> 組件顯示當前路由渲染的組件。使用 router.push() 和 router.replace() 方法進行程序化導航,前者保存歷史記錄,後者替換當前路由不留記錄。

Vue 中 div 元素跳轉的方法有兩種:使用 Vue Router,添加 router-link 組件。添加 @click 事件監聽器,調用 this.$router.push() 方法跳轉。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1
好用且免費的程式碼編輯器

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版
中文版,非常好用