您好,登錄后才能下訂單哦!
這篇文章主要介紹vue中遞歸組件的實現方法有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
js里面有遞歸算法,同時,我們也可以利用props來實現vue模板的遞歸調用,但是前提是組件擁有 name 屬性
父組件:slotDemo.vue:
<template> <p> <!-----遞歸組件-----> <ul> <simple3 :tree="item" v-for="item in tree"></simple3> </ul> </p> </template> <style lang="stylus" rel="stylesheet/stylus"> li padding-left 30px </style> <script> import simple3 from "./simple/simple3.vue"; export default{ data(){ return { tree: [{ label: "一級菜單", test:1, children: [{ label: "二級菜單", test:2, children: [{ label: "三級菜單", test:3 }] }] }] } }, components: { simple3 } } </script>
子組件:simple3.vue
<template> <li> <a>{{tree.label}}</a> <simple3 v-if="tree.children" :tree="item" v-for="item in tree.children" :class="item.test==2?'test2':'test3'"></simple3> </li> </template> <style rel="stylesheet/stylus" lang="stylus"> .test2 list-style disc .test3 list-style decimal </style> <script> export default{ name: "simple3", props: ["tree"] } </script>
上面是一個子組件,定義了 name 為 simple03,然后在模板中調用自身,結合 v-for 實現遞歸
為了防止出現死循環,在調用自身的時候,加入了 v-if 作為判定條件
父組件中調用的時候,需要通過 props 傳入一個 tree;
為了對每一級菜單有所區分,我對tree里面的每一個子集合里面加了一個test字段來區分是哪一級的菜單然后對其不同的樣式進行處理
最后的效果:
以上是“vue中遞歸組件的實現方法有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。