自制Breadcrumb 面包屑

这篇具有很好参考价值的文章主要介绍了自制Breadcrumb 面包屑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用场景:文章来源地址https://www.toymoban.com/news/detail-802863.html

  • 当系统拥有超过两级以上的层级结构时
  • 当需要告知用户『你在哪里』时
  • 当需要向上导航的功能时
    自制Breadcrumb 面包屑,前端,菜单,算法,递归
//定义MenuItem
export interface MenuItem{
	key:string // 英文名
	label:string //对应中文名
	children : MenuItem[]   // 一级子菜单
	parentNodeList : MenuItem[] // 所有上级菜单=breadCrumbList 
	...
}
function findParentNodeList(key, menuData, parentNodeList = []) {
  for (const item of menuData) {
    if (item.key=== key) {
      return [...parentNodeList , item ]; // 找到目标菜单,返回所有上级菜单
    }
    if (item.children) {
      const result = findParentNodeList(key, item.children, [...parentNodeList , item]); // 1 
      if (result.length > parentNodeList.length) {
        return result; // 已找到目标菜单,直接返回结果
      }
    }
  }

  return parentNodeList ; // 未找到目标菜单,返回当前的上级菜单
}

const breadCrumbList : MenuItem[] = findParentNodeList(activeKey,menuData);
const handelBreadCrumbClick=()=>{
	//处理点击事件,跳转路由
}
// 面包屑组件
const BreadCrumb = ()=>{
	return {breadCrumbList.map((item,index)=>{
	   <div onClick={handelBreadCrumbClick}>{index!==0&&'/'}{item.label}</div>
	})}
} 

到了这里,关于自制Breadcrumb 面包屑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包