| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 1 | import React, { useEffect } from 'react'; |
| 2 | import { useApi } from '@/hooks/request'; |
| 3 | import request from '@/utils/request'; |
| San3yuan | 2534d42 | 2025-04-08 21:43:18 +0800 | [diff] [blame^] | 4 | import { userLogin } from '@/api/user'; |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 5 | import { useAppDispatch } from '@/hooks/store'; |
| San3yuan | 2534d42 | 2025-04-08 21:43:18 +0800 | [diff] [blame^] | 6 | import { RootState } from '@/store'; |
| 7 | import style from './login.module.css'; |
| 8 | import { useSelector } from 'react-redux'; |
| 9 | import { useNavigate } from 'react-router'; |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 10 | |
| 11 | const Login: React.FC = () => { |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 12 | const dispatch = useAppDispatch(); |
| 13 | const { data, loading, error, refresh } = useApi(() => request.post(userLogin), false); |
| 14 | |
| San3yuan | 2534d42 | 2025-04-08 21:43:18 +0800 | [diff] [blame^] | 15 | const nav = useNavigate(); |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 16 | const handleLogin = async () => { |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 17 | const res = await refresh(); |
| 18 | console.log(res); |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 19 | dispatch({ type: "user/login", payload: res }); |
| San3yuan | 2534d42 | 2025-04-08 21:43:18 +0800 | [diff] [blame^] | 20 | nav('/'); |
| 21 | |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 22 | }; |
| San3yuan | 2534d42 | 2025-04-08 21:43:18 +0800 | [diff] [blame^] | 23 | const userName = useSelector((state: RootState) => state.user.userName); |
| 24 | |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 25 | return ( |
| San3yuan | 2534d42 | 2025-04-08 21:43:18 +0800 | [diff] [blame^] | 26 | |
| 27 | <div className={style.form}> |
| 28 | <img alt = "logo"></img> |
| 29 | <input type="email" className={style.email} placeholder="Enter your email" /> |
| 30 | <input type="password" className={style.password} placeholder="Enter your password" /> |
| 31 | <button className={style.submit} onClick={handleLogin}>Login</button> |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 32 | <button>Register</button> |
| 33 | </div> |
| 34 | ); |
| San3yuan | 2534d42 | 2025-04-08 21:43:18 +0800 | [diff] [blame^] | 35 | }; |
| San3yuan | 4d0e803 | 2025-04-04 17:21:40 +0800 | [diff] [blame] | 36 | |
| 37 | export default Login; |