import React from "react"; import './login.less' import IconClose from "./icons/IconClose"; import Button from "./Button"; import {useSetState, useCountDown} from "ahooks"; import Checkbox from "./Checkbox"; import {login, sendCode, UserModel} from "../services/api"; export type LoginProps = { onClose: (logged?: boolean,user?: UserModel) => void } const Login: React.FC = (props) => { const [state, setState] = useSetState({ sendLoading: false, sendEndTime: 0, ruleChecked: false, error: '', loginLoading: false, }) const [data, setData] = useSetState({ phone: '', code: '' }) const [countdown, formattedRes] = useCountDown({ targetDate: state.sendEndTime }) function error(e: Error) { setState({error: e.message}) } function onSubmit() { if (!data.phone) { setState({error: '请输入手机号码'}) return; } if (!data.code) { setState({error: '请输入验证码'}) return; } if (!state.ruleChecked) { setState({error: '请勾选使用协议'}) return; } setState({error: '', loginLoading: true}) login(data).then((ret) => { props.onClose(true,ret) }).catch(error).finally(() => { setState({ loginLoading: false }) }) } function onSend() { if (!data.phone) { setState({error: '请输入手机号码'}) return; } setState({sendLoading: true, error: ''}) sendCode(data.phone).then(() => { setState({ sendLoading: false, sendEndTime: Date.now() + 1000 * 60 }) }).catch(error).finally(() => { setState({ sendLoading: false }) }) } return (
props.onClose(false)}>

登 录

+86 setData({phone: e.currentTarget.value})} className="input" type="text" placeholder="输入手机号码" />
setData({code: e.currentTarget.value})} className="input" type="text" placeholder="输入验证码"/>
{state.error}
setState({ruleChecked})}>我已阅读并同意 《星图比特用户协议》
) } export default Login