// entrypoints/popup/App.tsx import { useState, useEffect } from 'react'; import { HashRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import { Link, useNavigate } from 'react-router-dom'; import { Button } from '@alifd/next'; import './App.css'; import '../../assets/tailwind.css' import '@alifd/next/dist/next.css'; import '@alifd/next/dist/next.min.css'; import Login from './pages/Login' import DesignPic from './pages/DesignPic'; // 创建一个保护路由组件 function ProtectedRoute({ children }: { children: React.ReactNode }) { const isLoggedIn = localStorage.getItem('isLoggedIn'); return isLoggedIn ? <>{children} : ; } // 创建带登出功能的导航组件 function Navigation({ onLogout, userinfo }: { onLogout: () => void, userinfo: any }) { const navigate = useNavigate(); const handleLogout = () => { onLogout(); navigate('/login'); }; return (
{userinfo && userinfo.nickname ?
等级: {userinfo.version_custom_name} 账户: {userinfo.nickname}
:<>556}
); } function App() { const [count, setCount] = useState(0); const [isLoggedIn, setIsLoggedIn] = useState(false); const [userinfo, setUserinfo] = useState(null); // 检查登录状态 useEffect(() => { const loggedIn = localStorage.getItem('isLoggedIn') === 'true'; setIsLoggedIn(loggedIn); // 获取用户信息 if (loggedIn) { if (localStorage.getItem('userinfo')) { let userinfoStr = localStorage.getItem('userinfo'); try { // 尝试解析用户信息 const parsedUserinfo = userinfoStr ? JSON.parse(userinfoStr) : null; setUserinfo(parsedUserinfo); } catch (e) { // 如果解析失败,可能是字符串格式 setUserinfo({ nickname: userinfoStr }); } } } }, []); // 处理登出逻辑 const handleLogout = () => { localStorage.removeItem('isLoggedIn'); localStorage.removeItem('access_token'); setIsLoggedIn(false); }; return ( {/* 只在登录后显示导航栏 */} {isLoggedIn && } } /> } /> {/* } /> } /> */} ); } export default App;