blob: 6dab985bd1703d8fd0101dd934bfbb4bc291450a [file] [log] [blame]
wu2f28f672025-06-19 14:29:30 +08001// src/App.jsx
2import React, { useState, useEffect } from 'react'
3import { useLocation } from 'react-router-dom'
4import Header from './components/Header'
5import Sidebar from './components/Sidebar'
6import AppRoutes from './router/App'
7import { getUserInfo } from './utils/auth'
8import './App.css'
TRM-codingd1cbf672025-06-18 15:15:08 +08009
10export default function App() {
wu2f28f672025-06-19 14:29:30 +080011 const location = useLocation()
12
13 // 初始 role = null (未登录或刚进来时)
14 const [role, setRole] = useState(null)
15
16 // 每次路由变化(含登录後 navigate),都重新从 storage 读一遍 userInfo
17 useEffect(() => {
18 const u = getUserInfo()
19 setRole(u?.role || null)
20 }, [location.pathname])
21
22 // 只有普通 user 才显示侧边栏
23 const showSidebar = role === 'user'
24
TRM-codingd1cbf672025-06-18 15:15:08 +080025 return (
TRM-coding85e5c322025-06-18 19:49:21 +080026 <div className="app">
27 <Header />
wu2f28f672025-06-19 14:29:30 +080028
29 {showSidebar && <Sidebar />}
30
31 <main
32 className="main-content"
33 style={{
34 // 没侧边栏时去掉左边距
35 marginLeft: showSidebar ? undefined : 0
36 }}
37 >
TRM-coding85e5c322025-06-18 19:49:21 +080038 <div className="content-wrapper">
39 <AppRoutes />
40 </div>
41 </main>
42 </div>
wu2f28f672025-06-19 14:29:30 +080043 )
44}