vue 中遞歸組件的用法

概念:

組件是可以在自己的模板中調用自身的,不過他們只能通過name選項來做這件事。

使用vue框架,我們會發(fā)現(xiàn)export default 導出的對象中有一個name屬性,這個name屬性是一個比較重要的屬性,而且屬性好處不止這一處。

用法:

1.首先我們要知道,既然是遞歸組件,那么一定要有一個結束的條件,否則就會使用組件循環(huán)引用,最終出現(xiàn) “max stack size exceeded”的錯誤,也就是棧溢出,那么我們可以用v-if=false作為遞歸條件的結束,當遇到v-if為false時,組件將不再進行渲染。

既然要用遞歸組件那么對我們的數(shù)據(jù)格式肯定是需要滿足遞歸的條件的,就像下邊這樣,這是一個樹狀的遞歸數(shù)據(jù)。

接下來,我們就用這個樹狀數(shù)據(jù),做一個簡單版的樹狀結構,也是遞歸組件最常用的方法之一。

實踐案例:

首先創(chuàng)建一個tree-father組件,這個組件作為使用遞歸組件的父組件

可以看到<tree/>就會我們說的遞歸組件,當使用它的時候,我們只需要把上邊定義好的數(shù)據(jù)通過props的方式傳遞過去即可。

接下來,遞歸組件接收到了父組件傳遞的數(shù)據(jù),就可以進行遞歸了,我們來看下邊的實現(xiàn)

記住本文開頭說的,那么屬性的使用很重要,(你可把它當做從import導入了一個組件并注冊,我們在template可以使用<tree></tree>使用子組件自身進行遞歸)

總結:

通過props從父組件拿到數(shù)據(jù),遞歸組件每次進行遞歸的時候都會tree組件傳遞下一級children數(shù)據(jù),整個過程結束之后,遞歸就完成了。當然這段代碼只是簡單的做了下遞歸組件的使用,對于樹形結構的需求來說,我們一般只會去渲染一級的數(shù)據(jù),當點擊一級菜單時,再去渲染一級菜單下的結構,如此往復。那么v-if就可以實現(xiàn)我們的這個需求,當v-if設置為false時,遞歸組件將不會再進行渲染,設置為true時,繼續(xù)渲染。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,624評論 0 25
  • 前言 您將在本文當中了解到,往網(wǎng)頁中添加數(shù)據(jù),從傳統(tǒng)的dom操作過渡到數(shù)據(jù)層操作,實現(xiàn)同一個目標,兩種不同的方式....
    itclanCoder閱讀 26,244評論 1 12
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 28,824評論 1 45
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容,還有我對于 Vue 1.0 印象不深的內容。關于...
    云之外閱讀 5,178評論 0 29
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本,Vue即被注冊為全局變量,可以在頁面使用了。 如果希望搭建...
    Awey閱讀 11,300評論 4 129

友情鏈接更多精彩內容