From 034260391dcb986cf33e45034836d9102dc40de6 Mon Sep 17 00:00:00 2001 From: xmdhs Date: Tue, 26 Sep 2023 23:42:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/Route.tsx | 9 +++++++-- frontend/src/views/Login.tsx | 10 ++++++---- frontend/src/views/User.tsx | 15 +++++++++++++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/frontend/src/Route.tsx b/frontend/src/Route.tsx index 798ca70..78d15b4 100644 --- a/frontend/src/Route.tsx +++ b/frontend/src/Route.tsx @@ -1,7 +1,8 @@ import { Routes, Route, Outlet, createBrowserRouter, RouterProvider } from "react-router-dom"; +import { ScrollRestoration } from "react-router-dom"; import Login from '@/views/Login' import Register from '@/views/Register' -import { ScrollRestoration } from "react-router-dom"; +import User from '@/views/User' const router = createBrowserRouter([ { path: "*", Component: Root }, @@ -11,7 +12,10 @@ function Root() { return ( <> - }> + }> + } /> + + } /> } /> @@ -33,6 +37,7 @@ export function PageRoute() { function Layout() { return ( <> +

我是头部

) diff --git a/frontend/src/views/Login.tsx b/frontend/src/views/Login.tsx index cfcc7c6..c83a750 100644 --- a/frontend/src/views/Login.tsx +++ b/frontend/src/views/Login.tsx @@ -14,7 +14,7 @@ import Alert from '@mui/material/Alert'; import { useSetAtom } from 'jotai'; import { token, username } from '@/store/store' import { login } from '@/apis/apis' -import { Link as RouterLink } from "react-router-dom"; +import { Link as RouterLink, useNavigate } from "react-router-dom"; import Loading from '@/components/Loading' import CheckInput, { refType } from '@/components/CheckInput' @@ -26,11 +26,10 @@ export default function SignIn() { const setToken = useSetAtom(token) const setUsername = useSetAtom(username) const checkList = React.useRef>(new Map()) + const navigate = useNavigate(); const handleSubmit = (event: React.FormEvent) => { event.preventDefault(); - if (loading) return - setLoading(true) const data = new FormData(event.currentTarget); const postData = { @@ -38,14 +37,17 @@ export default function SignIn() { password: data.get('password')?.toString(), } if (!Array.from(checkList.current.values()).map(v => v.verify()).reduce((p, v) => (p == true) && (v == true))) { - setLoading(false) return } + + if (loading) return + setLoading(true) login(postData.email!, postData.password ?? ""). then(v => { if (!v) return setToken(v.accessToken) setUsername(v.selectedProfile.name) + navigate("/user") }). catch(v => [setErr(String(v)), console.warn(v)]). finally(() => setLoading(false)) diff --git a/frontend/src/views/User.tsx b/frontend/src/views/User.tsx index e69de29..8357440 100644 --- a/frontend/src/views/User.tsx +++ b/frontend/src/views/User.tsx @@ -0,0 +1,15 @@ +import { token, username } from "@/store/store" +import { useAtomValue } from "jotai" + +export default function User() { + const nowToken = useAtomValue(token) + const nowUsername = useAtomValue(username) + + + return ( + <> +

你好: {nowUsername}

+

token: {nowToken}

+ + ) +} \ No newline at end of file