vue3 中如何檢查子組件的類型


在寫 vue 組件的時候,如何能保證其中嵌套的子組件符合我們的預期?

例如封裝一個切換 tab 的組件,分為兩個部分:外容器 tabs 和 單組件 tab,那么如何保證用戶在使用過程中, tabs 里面包裹的使我們想要的 tab 組件,而不是其他例如 div 標簽等?

如下圖,新建一個頁面,引入 tabs 和 tab 組件:

 

 

  那我們如何知道 tabs 里面的子元素類型?

首先我們在 tabs 源文件中,我們可以拿到 tabs 的 slots 內容,也是就引用時的子元素內容

 

 

 將 slots 的內容打印出來:

 

 

 這里面有一個極為重要的 default 函數,我們將他的執行結果打印出來:

打印結果是一個長度為三的數組,並且數組第一項的 type 為 div,那么這個數組是否就是 tabs 中的子元素呢?

我們在 tabs 源文件中引入 tab,比較一下數組中后面兩個元素的 type 是否是 tab:

 

 

 

 

打印結果:

 

現在我們可以得出結論:

在 vue3 中可以通過 context.slots.default() 得到組件中的子元素,如果要檢驗子元素的類型,只需要在拿到 default 返回的列表之后進行遍歷就可以啦:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM