Login_20250812092116.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // entrypoints/popup/pages/Login.tsx
  2. import React, { useState } from 'react';
  3. import { useNavigate } from 'react-router-dom';
  4. export default function Login({ setIsLoggedIn }: { setIsLoggedIn: (loggedIn: boolean) => void }) {
  5. const [username, setUsername] = useState('');
  6. const [password, setPassword] = useState('');
  7. const navigate = useNavigate();
  8. const handleLogin = (e: React.FormEvent) => {
  9. e.preventDefault();
  10. // 这里添加实际的登录逻辑
  11. if (username && password) {
  12. // 模拟登录成功
  13. // 你可以在这里保存用户信息到 localStorage 或 Chrome storage
  14. localStorage.setItem('isLoggedIn', 'true');
  15. setIsLoggedIn(true);
  16. // 跳转到首页
  17. navigate('/');
  18. }
  19. };
  20. return (
  21. <div className="p-4">
  22. <h1 className="text-xl mb-4">登录</h1>
  23. <form onSubmit={handleLogin}>
  24. <div className="mb-3">
  25. <input
  26. type="text"
  27. placeholder="用户名"
  28. className="w-full p-2 border rounded"
  29. value={username}
  30. onChange={(e) => setUsername(e.target.value)}
  31. />
  32. </div>
  33. <div className="mb-3">
  34. <input
  35. type="password"
  36. placeholder="密码"
  37. className="w-full p-2 border rounded"
  38. value={password}
  39. onChange={(e) => setPassword(e.target.value)}
  40. />
  41. </div>
  42. <button
  43. type="submit"
  44. className="w-full bg-blue-500 text-white p-2 rounded hover:bg-blue-600"
  45. >
  46. 登录
  47. </button>
  48. </form>
  49. </div>
  50. );
  51. }