React----Antd面包屑的实现代码

文章介绍了如何在React应用中利用Antd的Breadcrumb组件和路由信息创建面包屑导航。首先,需要对路由和导航菜单的数据进行处理,将字符串图标转换为组件图标。然后,通过useLocation和useState等Reacthooks获取并管理路由信息,动态生成面包屑路径。

配合路由和导航导航菜单实现面包屑,首先要有路由或导航菜单的数据(路由和标题)

可以先对数据进行处理,编程方便遍历的数据JS——数据处理_朝朝忆萍的博客-CSDN博客一个数组的数据是一组对象,对象可能有一个属性是与数组相似的结构要求,把数组中对象中的一个值作为新对象的键,数组中对象的另一个值作为新对象的值,包括嵌套的数组中的对象都放到新对象中https://blog.csdn.net/jddfj/article/details/129208198如果要实现面包屑中要有图标,还要将字符串图标变为组件图标

React将字符串转化成组件,将Antd图标字符串转化为图标组件_朝朝忆萍的博客-CSDN博客

实现面包屑

import React from 'react'
//菜单列表
import MenuList from '../sider/MenuList'
import { Breadcrumb } from 'antd';
import { useLocation } from 'react-router-dom';
import { useEffect } from 'react';
import { useState } from 'react';
//处理菜单列表的方法
import menuKeyAndLaber from "@/compented/MenuKeyAndLaber"


export default function Breadcrumbsd() {
    // 获取页面路由并集合成数组
    const location = useLocation();
    const pathSnippets = location.pathname.split('/').filter((i) => i);

    // 存放路由和标题对应信息
    const [breadcrumbNameMap, setbreadcrumbNameMap] = useState([])

    //初始化时对菜单列表进行处理
    useEffect(() => {
        setbreadcrumbNameMap(menuKeyAndLaber(MenuList))
    }, [])

    // 根据路由生成面包屑
    const extraBreadcrumbItems = pathSnippets.map((_, index) => {
        // 根据路由数组循环遍历
        const url = `/${pathSnippets.slice(0, index + 1).join('/')}`;
        // console.log(url);
        return (
            <Breadcrumb.Item key={url}>
                <span>{breadcrumbNameMap[url]}</span>
            </Breadcrumb.Item>
        );
    });

    // 面包屑导航主题
    const breadcrumbItems = [
        //固定的首页面包屑,也可以不用
        <Breadcrumb.Item key="home">
            //使用Link标签可以实现跳转
            <span>首页</span>
        </Breadcrumb.Item>,
        ...extraBreadcrumbItems
    ]

    return (
        <div className="breadcrumb">
            <Breadcrumb>{breadcrumbItems}</Breadcrumb>
        </div>
    )
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值