import { Form, Input, Checkbox, Link, Button, Space, Message, } from '@arco-design/web-react'; import { FormInstance } from '@arco-design/web-react/es/Form'; import { IconLock, IconUser } from '@arco-design/web-react/icon'; import React, { useEffect, useRef, useState } from 'react'; import axios from 'axios'; import useStorage from '@/utils/useStorage'; import useLocale from '@/utils/useLocale'; import locale from './locale'; import styles from './style/index.module.less'; export default function LoginForm() { const formRef = useRef(); const [errorMessage, setErrorMessage] = useState(''); const [loading, setLoading] = useState(false); const [loginParams, setLoginParams, removeLoginParams] = useStorage('loginParams'); const t = useLocale(locale); const [rememberPassword, setRememberPassword] = useState(!!loginParams); function afterLoginSuccess(params) { // 记住密码 if (rememberPassword) { setLoginParams(JSON.stringify(params)); } else { removeLoginParams(); } // 记录登录状态 localStorage.setItem('userStatus', 'login'); // 跳转首页 window.location.href = '/'; } function login(params) { setErrorMessage(''); setLoading(true); axios .post('/api/user/login', params) .then((res) => { const { status, msg } = res.data; if (status === 'ok') { afterLoginSuccess(params); } else { setErrorMessage(msg || t['login.form.login.errMsg']); } }) .finally(() => { setLoading(false); }); } function onSubmitClick() { formRef.current.validate().then((values) => { login(values); }); } // 读取 localStorage,设置初始值 useEffect(() => { const rememberPassword = !!loginParams; setRememberPassword(rememberPassword); if (formRef.current && rememberPassword) { const parseParams = JSON.parse(loginParams); formRef.current.setFieldsValue(parseParams); } }, [loginParams]); return (
账号登录
{errorMessage && (
{errorMessage}
)}
{t['login.form.rememberPassword']} {t['login.form.forgetPassword']}
); }