react-router-dom6路由表中添加meta/自定义信息

不能使用interface去声明新接口并继承RouteObject,会报错“接口只能扩展使用静态已知成员的对象类型或对象类型的交集。”

RouteObject是type声明的类型,无法使用extends继承,可以新建type类型,并使用“&”交叉类型实现合并交叉效果

import {
  createBrowserRouter,
  RouteObject,
} from "react-router-dom";
import { GoldFilled,SnippetsFilled } from '@ant-design/icons';
import App from '@/page/App'
import ErrorPage from './ErrorPage'
import {lazy, ReactNode, Suspense} from 'react'

const Page1 = lazy(()=>import('@/page/page1/Page1'))
const Page2 = lazy(()=>import('@/page/page2/Page2'))

export type RouteType = RouteObject & {
  name?:string
  title?:string
  icon?:ReactNode
  children?: RouteType[]
}


const PageLoading = function(Node:ReactNode){
  return (
    <Suspense fallback={<Loading></Loading>}>
      {Node}
    </Suspense>
  )
}
const Loading = function(){
  return 'Loading...'
}
const routerObj:RouteType[] = [
  {
    path: "/",
    element: <App/>,
    errorElement:<ErrorPage/>,
    children:[
      {
        path:'/page1',
        element: PageLoading(<Page1/>) ,
        title:'page1',
        icon:<GoldFilled />,
        auth:false
      },
      {
        path:'/page2',
        element:PageLoading(<Page2/>),
        title:'Page2',
        icon: <SnippetsFilled />,
        auth:false
      },
    ]
  },
]

export const router:any = createBrowserRouter(routerObj);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值