umi插件开发仿dumi项目自动生成导航栏实现详解
更新时间:2023年01月28日 09:46:30 作者:kukiiu
这篇文章主要为大家介绍了umi插件开发仿dumi项目自动生成导航栏实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
引言
前面我们已经完成了页面布局和页面路由,现在我们的导航栏还是自己写死在代码中,现在我们来改造成自动根据页面路由来生成导航栏。
获取路由信息
我们在前面创建的路由对象,会被umi
存入appData
对象中,umi
提供了useAppData
API可以用于获取路由信息。
创建获取导航数据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') // 获取导航信息 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插件开发仿dumi项目自动生成导航栏实现详解的详细内容,更多关于umi插件自动生成导航栏的资料请关注脚本之家其它相关文章!
相关文章
JavaScript 运行机制详解再浅谈Event Loop
这篇文章主要介绍了JavaScript 运行机制详解及浅谈了Event Loop,感兴趣的小伙伴可以和小编一起阅读下面文章的具体内容2021-09-09业务层hooks封装useSessionStorage实例详解
这篇文章主要为大家介绍了业务层hooks封装useSessionStorage实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-08-08自行实现Promise.allSettled的Polyfill处理
这篇文章主要为大家介绍了自行实现Promise.allSettled 的 Polyfill处理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-08-08
最新评论