import { Button, Form, Input, message } from 'antd'; import { login } from '../../api/user'; import './index.scss'; import { UserOutlined, KeyOutlined } from '@ant-design/icons'; import { useDispatch } from 'react-redux'; import { setUser } from '../../store/slice/user'; import { useNavigate, useSearchParams } from 'react-router-dom'; const onLogin = async (user, { dispatch, navigate }, to = '/') => { let { data: { code, msg, data }, } = await login(user); if (code == 0) { message.success(msg); //! 存token localStorage.setItem('token', data.token); //! redux存储用户信息 dispatch(setUser(data.user)); //! 跳转页面:如果有查询参数r 就 到r的地址,否则 去主页 navigate(to); return; } message.error(msg); }; function Login() { const dispatch = useDispatch(); const navigate = useNavigate(); const [searchParams] = useSearchParams(); const to = searchParams.get('r') ? searchParams.get('r') : undefined; function onFinish(values) { onLogin(values, { dispatch, navigate }, to); } return (

登入系统

} placeholder="账号..." allowClear /> } placeholder="密码..." allowClear />
); } export default Login;