vue3.0 Composition API 上手初體驗 用路由循環,做個導航菜單

vue3.0 Composition API 上手初體驗 用路由循環,做個導航菜單

通過前文的講述,我已經基本講清楚了 vue 3.0 的新特性,以及開發使用方法。只是演示 Demo 搞了好幾個頁面,只能輸入地址進行跳轉讓我不爽,於是,我給我的 Demo 代碼搞了個菜單,這裏,我把這部分內容講述一下。

重構 src/router/index.js 文件

在原來編寫的代碼中,我給單條路由只寫了 pathcomponent 兩個參數,這裏,我們加上 meta 參數,併爲其設置 title 屬性。相關代碼如下:

// 構建我們的頁面路由配置,可以看到,這裏和原來的寫法並無二致。
const routes = [
  {
    path: '/',
    component: Home,
    meta: { title: '首頁-響應式數據計數器 Demo' }
  }, {
    path: '/about',
    component: () => import('@/views/About.vue'),
    meta: { title: '關於我們-響應式對象數據 Demo' }
  }, {
    path: '/life',
    component: () => import('@/views/Life.vue'),
    meta: { title: '生命週期 Demo' }
  }, {
    path: '/computed',
    component: () => import('@/views/Computed.vue'),
    meta: { title: '計算屬性 Demo' }
  }, {
    path: '/parent',
    component: () => import('@/views/Parent.vue'),
    meta: { title: '普通組件 Demo' }
  }, {
    path: '/father',
    component: () => import('@/views/Father.vue'),
    meta: { title: '函數組件 Demo' }
  }
]

好的,通過上述的配置,我們需要的基礎數據已經有了。

編寫菜單函數組件

我們可以把菜單作爲一個函數組件,我們新建 src/components/Menu.js 文件,並錄入以下內容:

// 引入路由
import router from '@/router'
// 導出爲函數
export default () => {
  // 通過 getRoutes() 函數,獲取所有的路由信息
  const routes = router.getRoutes()
  const links = []
  // 循環路由信息,將數據整理並 push 到 links 數組
  routes.forEach((route, index) => {
    links.push({
      name: route.meta.title || `未命名${index}`,
      link: route.path
    })
  })
  // 將 links 數組返回
  return links
}

我們可以通過 vue-router 提供的 getRoutes() 函數,來獲取我們配置的所有路由信息,打印數據如下圖所示:

從上圖我們可以看到,其數據結構還是比較複雜的。而我們做一個導航菜單,完全沒有必要使用如此複雜的數據。因此,我上面寫了一個 forEach 循環,將數據整理了一下,並返回。

重寫 src/App.vue 引入菜單函數組件

少廢話,上代碼:

<template>
  <!-- 菜單 -->
  <ul>
    <li v-for="item in menus">
      <router-link :to="item.link">{{ item.name }}</router-link>
    </li>
  </ul>
  <!-- 路由視圖 -->
  <router-view />
</template>
<script>
// 引入 Menu 組件
import Menu from '@/components/Menu.js'

export default {
  setup () {
    // 獲取菜單數據並返回
    const menus = Menu()
    return {
      menus
    }
  }
}
</script>

說實話,不是很優雅。其實也可以換個做法,就是上面的 Menu.js 可以該寫成一個 vue 普通組件,然後再這邊只要引用註冊並使用即可。

就這樣吧,看效果:

如上圖所示,我們的每個頁面上,都已經有了導航菜單了。

本文由 FungLeo 原創,允許轉載,但轉載必須保留首發鏈接。


《vue3.0 Composition API 上手初體驗》 文章目錄地址: https://blog.csdn.net/fungleo/category_10020552.html 我會不定期的補充一些相關內容,歡迎關注訂閱!

文章代碼倉庫 https://github.com/fengcms/vue3-demo 會用 git 的朋友,可以去直接下載我的代碼。當然,給我點個 star 啥的,也不是不可以的哈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章