Files
novalon-manage-system/novalon-manage-web/src/router/index.tsx
T
张翔 434a81dc71 feat(react19-migration): 阶段3 - 状态管理与路由
- T3.1: 创建 useAuthStore (Zustand) - login/logout/initFromStorage
- T3.2: 创建 usePermissionStore (Zustand) - fetchUserMenus/hasPermission/hasRole
- T3.3: 创建 useAppStore (Zustand) - collapsed 状态管理
- T3.4: 创建 React Router v7 数据路由配置 (createBrowserRouter)
- T3.5: 创建 authLoader 路由守卫 (token校验→初始化→权限加载)
- 创建占位页面组件 (13个路由页面 + DefaultLayout)
- 更新 App.tsx 使用 RouterProvider
- 安装 jwt-decode 依赖

验证: npx tsc --noEmit 通过, npm run dev 启动成功
2026-05-06 19:43:39 +08:00

49 lines
1.3 KiB
TypeScript

import { createBrowserRouter, Navigate } from 'react-router'
import { authLoader } from './guards'
import {
DefaultLayout,
Login,
Dashboard,
UserManagement,
RoleManagement,
MenuManagement,
ConfigManagement,
DictManagement,
FileManagement,
NoticeManagement,
LoginLog,
OperationLog,
ExceptionLog,
Forbidden,
} from './routes'
export const router = createBrowserRouter([
{
path: '/login',
element: <Login />,
},
{
path: '/403',
element: <Forbidden />,
},
{
path: '/',
element: <DefaultLayout />,
loader: authLoader,
children: [
{ index: true, element: <Navigate to="/dashboard" replace /> },
{ path: 'dashboard', element: <Dashboard /> },
{ path: 'users', element: <UserManagement /> },
{ path: 'roles', element: <RoleManagement /> },
{ path: 'menus', element: <MenuManagement /> },
{ path: 'sys/config', element: <ConfigManagement /> },
{ path: 'dict', element: <DictManagement /> },
{ path: 'files', element: <FileManagement /> },
{ path: 'notice', element: <NoticeManagement /> },
{ path: 'loginlog', element: <LoginLog /> },
{ path: 'oplog', element: <OperationLog /> },
{ path: 'exceptionlog', element: <ExceptionLog /> },
],
},
])