如何使用|如何使用 Ts+react自定义面包屑导航
功能示例展示:
官方示例:
文章图片
封装完成的示例:
文章图片
技术栈:JS+TS+React+React节点克隆+React组件通信
面包屑导航作用就是标识当前在那个路由页面
面包屑导航使用方法如下:
import Breadcrumb from '@/components/Breadcrumb'const Article = () => {
return
// separator:分隔符
首页
内容管理
自定义面包屑导航Breadcrumb的代码
import React from 'react'
import BreadcrumbItem from '../BreadcrumbItem'
interface PropsType {
children: JSX.Element | JSX.Element[]
separator?: string
}const Breadcrumb = (props: PropsType): JSX.Element => {
const { separator, children } = props
/*
为什么要克隆children?
如果不克隆children,那么separator是Breadcrumb组件属性的话,是无法
传递给BreadcrumbItem组件,导致BreadcrumbItem没有分隔符
*/
//React.Children.map用来遍历 ReactNode元素
//将所有childred遍历,将element克隆,并且给新的element加上separator( 分隔符 )
//React.Children.map返回一个新的ReactNode数组,将新的渲染
const BreadcrumbItemList = React.Children.map(children, ((element, index) => {
if (children instanceof Array) {
if ((children.length - 1) === index) {
return React.cloneElement(element)
}
return React.cloneElement(element, {
separator: separator ? separator : '>'
})
}
}))return
{BreadcrumbItemList}}Breadcrumb.Item = BreadcrumbItem
export default Breadcrumb
【如何使用|如何使用 Ts+react自定义面包屑导航】面包屑导航BreadcrumbItem的代码
interface ItemType {
className?: string
href?: string
onClick?(): void
children: any
title?: string,
separator?: string
}const BreadcrumbItem = ({ className, href, onClick, children, title, separator }: ItemType) => {
const click = () => {
href && navigate(`${href}`)
}
return ({title}
{children}
// 除了最后一个item,其他的都有separator分隔符,这样就实现了面包屑导航栏
{separator})
}
export default BreadcrumbItem
推荐阅读
- SAP|SAP UI5 应用开发教程之六十八 - 如何实现 SAP UI5 路由失败时显示自定义的 NOT Found 页面试读版
- 算法题(使用分治算法的最大子数组总和)
- 在C语言中使用计算机图形编程绘制移动的汽车
- 如何轻松学习图案打印()
- Android 如何判断指定服务是否在运行中 “Service”
- 如何在Android中的Activity启动第三方应用程序()
- Android中使用databinding编译时出现的error:Execution failed for task ':app:dataBindingProcessLayoutsDebug&
- 算法题(如何在循环双链表的特定位置进行插入())
- 面向服务的架构是什么(如何理解?)
- 如何应对Win8.1应用商店无法完成购买出错0x80096004的问题