vue 組件循環(huán)引用

問題的背景是菜單不能寫死, 菜單要做成有權(quán)限的。 登陸完成之后, 獲取權(quán)限列表, 根據(jù)權(quán)限列表的返回加載組件, 首先便是列表的展示, 列表不一定是單一的一層循環(huán), 可能是有嵌套關(guān)系的。
總而言之, 徐然出來之后是一個樹狀結(jié)構(gòu)。如下。


menus.png

組件的 循環(huán)引用 在表示一個樹狀結(jié)構(gòu)的時候特別有用,比如一個菜單列表,除了數(shù)據(jù)的不同, 結(jié)構(gòu)其實是一樣的.
循環(huán)引用又分為自身引用 跟 組件之間互相引用。具體的寫法上有些微的差異

我們接收到的數(shù)據(jù)可能是這樣的

{
  "success": true,
  "data": [{
      "meta": {
        "name": "歐洲"
      },
      "name": "Europa",
      "component": "/europa",
      "path_": "/europa",
      "children": [{
          "meta": {
            "name": "法蘭西"
          },
          "name": "France",
          "component": "/france",
          "path_": "/france",
          "children": [{
            "meta": {
              "name": "勃艮第"
            },
            "name": "burgundy",
            "component": "/burgundy",
            "path_": "/burgundy",
            "children": null
          }]
        },
        {
          "meta": {
            "name": "德意志"
          },
          "name": "Germany",
          "component": "/germany",
          "path_": "/germany",
          "children": null
        }
      ]
    },
    {
      "meta": {
        "name": "亞洲"
      },
      "name": "Asia",
      "component": "/asia",
      "path_": "/asia",
      "children": null
    }
  ]
}

這段數(shù)據(jù)如果要進(jìn)行處理的話,比如說數(shù)據(jù)的屬性 path_ 做成從父級別往下疊加的值是最好的, 但是在生成的時候沒做。 因為有嵌套, 幾乎肯定是要用遞歸函數(shù)去處理的, 說起來遞歸函數(shù)跟循環(huán)引用還是有那么一點點關(guān)系的, 處理的過程略;
代碼準(zhǔn)備分成三塊, 第一塊是數(shù)據(jù)的總的容器, 第二塊是 數(shù)據(jù)具體的渲染 要用到 v-for 第三塊是單個數(shù)據(jù)
index.vue sidebar-items.vue sidebar-item.vue
并且是 第一塊引用第二塊, 第二塊引用第三塊, 第三塊引用第二塊;如下

引用.png

sidebar-items 暴露出 itemDataprops 作為數(shù)據(jù)的源. index.vue 提供總的數(shù)據(jù)源, sidebar-item 提供分支的數(shù)據(jù)源

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

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 您將在本文當(dāng)中了解到,往網(wǎng)頁中添加數(shù)據(jù),從傳統(tǒng)的dom操作過渡到數(shù)據(jù)層操作,實現(xiàn)同一個目標(biāo),兩種不同的方式....
    itclanCoder閱讀 26,245評論 1 12
  • 本文章是我最近在公司的一場內(nèi)部分享的內(nèi)容。我有個習(xí)慣就是每次分享都會先將要分享的內(nèi)容寫成文章。所以這個文集也是用來...
    Awey閱讀 9,577評論 4 67
  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,624評論 0 25
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,178評論 0 29
  • 組件(Component)是Vue.js最核心的功能,也是整個架構(gòu)設(shè)計最精彩的地方,當(dāng)然也是最難掌握的。...
    六個周閱讀 5,772評論 0 32

友情鏈接更多精彩內(nèi)容