434a81dc71
- 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 启动成功
49 lines
1.3 KiB
TypeScript
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 /> },
|
|
],
|
|
},
|
|
])
|