import React, { useState, useCallback, useMemo } from 'react'; import styles from './index.module.scss'; import { Box, Flex, Image } from '@chakra-ui/react'; import { PageTypeEnum } from '@/constants/user'; import { useScreen } from '@/hooks/useScreen'; import type { ResLogin } from '@/api/response/user'; import { useRouter } from 'next/router'; import { useUserStore } from '@/store/user'; import dynamic from 'next/dynamic'; const LoginForm = dynamic(() => import('./components/LoginForm')); const RegisterForm = dynamic(() => import('./components/RegisterForm')); const ForgetPasswordForm = dynamic(() => import('./components/ForgetPasswordForm')); const Login = () => { const router = useRouter(); const { isPc } = useScreen(); const [pageType, setPageType] = useState<`${PageTypeEnum}`>(PageTypeEnum.login); const { setUserInfo } = useUserStore(); const loginSuccess = useCallback( (res: ResLogin) => { setUserInfo(res.user, res.token); router.push('/'); }, [router, setUserInfo] ); function DynamicComponent({ type }: { type: `${PageTypeEnum}` }) { const TypeMap = { [PageTypeEnum.login]: LoginForm, [PageTypeEnum.register]: RegisterForm, [PageTypeEnum.forgetPassword]: ForgetPasswordForm }; const Component = TypeMap[type]; return ; } return ( {isPc && ( )} ); }; export default Login;