umi插件開發(fā)仿dumi項(xiàng)目自動(dòng)生成導(dǎo)航欄實(shí)現(xiàn)詳解
引言
前面我們已經(jīng)完成了頁面布局和頁面路由,現(xiàn)在我們的導(dǎo)航欄還是自己寫死在代碼中,現(xiàn)在我們來改造成自動(dòng)根據(jù)頁面路由來生成導(dǎo)航欄。
獲取路由信息
我們?cè)谇懊鎰?chuàng)建的路由對(duì)象,會(huì)被umi
存入appData
對(duì)象中,umi
提供了useAppData
API可以用于獲取路由信息。
創(chuàng)建獲取導(dǎo)航數(shù)據(jù)hook
// /src/client/theme-api/useNavData.ts import { useAppData } from "umi"; /** * hook for get nav data */ export const useNavData = () => { // 獲取全局路由信息 const { routes } = useAppData(); // 獲取/docs下的路由信息 const localeDocRoutes: any[] = Object.values(routes).filter(route => route.parentId === 'DocLayout') // 獲取導(dǎo)航信息 const nav: any = [] Object.values(localeDocRoutes).forEach(route => { const _r = { ...route } if(_r.path == '/') { nav.push({ title: '首頁', link: '/', }) } else { nav.push({ title: route.path, link: '/' + route.path, }) } }) return nav; };
Layout中使用
// /src/client/theme-default/layouts/DocLayout.ts import { Link, Outlet } from 'umi'; import { useNavData } from '@/client/theme-api/useNavData'; import styles from './index.less'; export default function Layout() { const nav = useNavData() return ( <div className={styles.navs}> <ul> {nav.map((item: any) => (<li key={item.link}> <Link style={{ marginRight: '10px' }} to={item.link}>{item.title}</Link> </li>))} </ul> <Outlet /> </div> ); }
以上就是umi插件開發(fā)仿dumi項(xiàng)目自動(dòng)生成導(dǎo)航欄實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于umi插件自動(dòng)生成導(dǎo)航欄的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序 利用css實(shí)現(xiàn)遮罩效果實(shí)例詳解
這篇文章主要介紹了微信小程序 利用css實(shí)現(xiàn)遮罩效果實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01ResizeObserver 監(jiān)視 DOM大小變化示例詳解
這篇文章主要為大家介紹了ResizeObserver 監(jiān)視 DOM大小變化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10JavaScript 運(yùn)行機(jī)制詳解再淺談Event Loop
這篇文章主要介紹了JavaScript 運(yùn)行機(jī)制詳解及淺談了Event Loop,感興趣的小伙伴可以和小編一起閱讀下面文章的具體內(nèi)容2021-09-09業(yè)務(wù)層hooks封裝useSessionStorage實(shí)例詳解
這篇文章主要為大家介紹了業(yè)務(wù)層hooks封裝useSessionStorage實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08微信小程序 頁面跳轉(zhuǎn)及數(shù)據(jù)傳遞詳解
這篇文章主要介紹了微信小程序 頁面跳轉(zhuǎn)及數(shù)據(jù)傳遞詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03利用 JavaScript 構(gòu)建命令行應(yīng)用
這篇文章主要介紹了利用 JavaScript 構(gòu)建命令行應(yīng)用,下面文章圍繞如何利用JavaScript 構(gòu)建命令行應(yīng)用的相關(guān)資料炸開詳細(xì)內(nèi)容,需要的朋友可以參考一下2021-11-11http proxy 對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行代理使用詳解
這篇文章主要為大家介紹了http proxy 對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行代理使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09自行實(shí)現(xiàn)Promise.allSettled的Polyfill處理
這篇文章主要為大家介紹了自行實(shí)現(xiàn)Promise.allSettled?的?Polyfill處理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08