2025-07-14 08:43:22 +08:00
|
|
|
|
import React, { useEffect, useState } from 'react';
|
2025-06-17 14:20:06 +08:00
|
|
|
|
//导入logo图片
|
|
|
|
|
import LogoImg from '@/assets/img/logo.png';
|
|
|
|
|
//导入菜单组件
|
2025-06-17 18:32:33 +08:00
|
|
|
|
import Language from './Language';
|
|
|
|
|
import User from './User';
|
2025-07-15 15:47:21 +08:00
|
|
|
|
import { history } from 'umi';
|
2025-07-01 14:18:23 +08:00
|
|
|
|
import './layout.less';
|
2025-07-15 15:47:21 +08:00
|
|
|
|
import { Logout } from '@/servers/api/login';
|
2025-07-14 08:43:22 +08:00
|
|
|
|
|
2025-07-02 16:14:42 +08:00
|
|
|
|
const HeaderComponent: React.FC = () => {
|
2025-07-15 15:47:21 +08:00
|
|
|
|
// 用 state 保存 userId
|
|
|
|
|
const [userId, setUserId] = useState(() => sessionStorage.getItem('userId'));
|
2025-07-14 08:43:22 +08:00
|
|
|
|
|
2025-07-15 15:47:21 +08:00
|
|
|
|
const handLogout = () => {
|
|
|
|
|
Logout()
|
|
|
|
|
sessionStorage.clear();
|
|
|
|
|
history.replace('/login');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
// 定义一个方法用于手动刷新 userId
|
|
|
|
|
const refreshUserId = () => setUserId(sessionStorage.getItem('userId'));
|
|
|
|
|
// 登录后你可以手动调用 refreshUserId
|
|
|
|
|
// 或者监听页面 storage 事件(多窗口/多tab同步)
|
|
|
|
|
window.addEventListener('storage', refreshUserId);
|
|
|
|
|
// 页面内操作,比如登录成功后,也可以在登录回调里调用 setUserId
|
|
|
|
|
return () => window.removeEventListener('storage', refreshUserId);
|
|
|
|
|
}, []);
|
2025-07-14 08:43:22 +08:00
|
|
|
|
|
2025-06-17 14:20:06 +08:00
|
|
|
|
return (
|
2025-06-17 18:32:33 +08:00
|
|
|
|
<div className="headerComponent">
|
|
|
|
|
<img className="logo" src={LogoImg} alt="logo" />
|
|
|
|
|
<div className="flex">
|
|
|
|
|
<Language />
|
2025-07-15 15:47:21 +08:00
|
|
|
|
{!userId ? (
|
|
|
|
|
<User />
|
|
|
|
|
) : (
|
|
|
|
|
<div style={{cursor: 'pointer'}} onClick={handLogout}>退出</div>
|
|
|
|
|
)}
|
|
|
|
|
|
2025-06-17 18:32:33 +08:00
|
|
|
|
</div>
|
2025-06-17 14:20:06 +08:00
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|
2025-06-17 18:32:33 +08:00
|
|
|
|
export default HeaderComponent;
|