Vue3
1、main.js文件如下:
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import route from './route'
const app = createApp(App)
app.use(route).mount('#app')
2、route文件如下:
//route.js
import { createRouter, createWebHistory } from 'vue-router'
// 导入路由页面组件
import login from '../view/user/login'
import dataStandar from '../view/dataStandar'
import FinalStandard from '../view/FinalStandard'
const routes = [
{
path: '/login', component: login, name: 'login'
},
{
path: '/data-standard', component: dataStandar, name: 'data-standard',
children: [
{
path: 'final-standard', component: FinalStandard, name: 'final-standard'
}
]
},
{ path: '/', redirect: '/data-standard/final-standard' }
]
const router = createRouter({
history: createWebHistory(),
routes
})
router.beforeEach((to, from, next) => {
const token = sessionStorage.getItem('token')
if (token || to.path == '/login') {
next()
}
else {
next('/login')
}
})
export default router
React
1、App.js文件如下
// App.js
import Routers from './router'
import { useEffect } from 'react'
import { useNavigate } from 'react-router-dom'
function App () {
const navigate = useNavigate()
const token = sessionStorage.getItem('token') ? sessionStorage.getItem('token') : ''
const isAuth = token
useEffect(() => {
if (!isAuth) {
navigate('/login')
}
}, [isAuth, navigate])
return (
<div className="App">
<Routers />
</div>
)
}
export default App
2、Routers文件如下:
// Routers.js
import { Navigate, useRoutes } from 'react-router-dom'
import Login from '../pages/Login/index'
import Metadataplatform from '../pages/Metadataplatform/index'
import Homepage from '../pages/Homepage/index'
const Routers = () => {
const Elements = useRoutes([
{
path: '/metadataplatform',
element: <Metadataplatform />,
children: [
{
path: 'homepage',
element: <Homepage />,
}]
},
{
path: '/',
element: <Navigate to="/metadataplatform/homepage" />
},
{
path: '/login',
element: <Login />,
}
])
return Elements
}
export default Routers