1.下载oh-router 和 oh-router-react
- yarn add oh-router oh-router-react
2.引入、定义路由
import { Router } from "oh-router";
export const router=new Router({
// 路由配置
routes : [
{
path:'/login',
element: <Login/>
},
{
path:'/',
element: <Home/>
},
{
path:'/user',
element: <User/>
},
{
path: '*',
element: <Error/>
},
]
})
3.入口文件main.ts
import { RouterView } from 'oh-router-react'
import React from 'react'
import ReactDOM from 'react-dom/client'
import { router } from './router'
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
//使用路由
<RouterView router={router} />
</React.StrictMode>
)
4.创建 router/authwares/loginCheack.ts
import { Middleware, MiddlewareContext } from "oh-router";
import { router } from "..";
import { getToken } from "../shared/token";
export class LoginChecked extends Middleware {
async handler(ctx: MiddlewareContext<{}>, next: () => Promise<any>): Promise<void> {
const token = getToken();
if( ctx.to.pathname ==='/login'){
if(token){
router.navigate('/')
}else{
next()
}
}
if (token) {
next()
} else {
router.navigate('/login')
}
}
}
5.router/index.ts
import { Router } from "oh-router";
import { LoginChecked } from "./authwares/loginCheack";
export const router=new Router({
middlewares:[new LoginChecked()],
routes : [
{
path:'/login',
element: <Login/>
},
{
path:'/',
element: <Home/>
},
{
path:'/user',
element: <User/>
},
{
path: '*',
element: <Error/>
},
]
})