From 1931df4c7f4ff6e42fc4d3fd50941f5ae31a6a77 Mon Sep 17 00:00:00 2001 From: xmdhs Date: Sat, 25 Nov 2023 17:02:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=89=8D=E7=AB=AF=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BC=93=E5=AD=98=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/NeedLogin.tsx | 22 ++++++++++++---------- frontend/src/views/Register.tsx | 23 ++++++++++++----------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/frontend/src/components/NeedLogin.tsx b/frontend/src/components/NeedLogin.tsx index 20c26f4..b7b38b9 100644 --- a/frontend/src/components/NeedLogin.tsx +++ b/frontend/src/components/NeedLogin.tsx @@ -3,13 +3,14 @@ import { ApiErr } from "@/apis/error"; import { token } from "@/store/store"; import { useRequest } from "ahooks"; import { useAtomValue } from "jotai"; +import { useEffect } from "react"; import { useNavigate, Navigate } from "react-router-dom"; export default function NeedLogin({ children, needAdmin = false }: { children: JSX.Element, needAdmin?: boolean }) { const t = useAtomValue(token) const navigate = useNavigate(); - useRequest(() => userInfo(t), { + const u = useRequest(() => userInfo(t), { refreshDeps: [t], cacheKey: "/api/v1/user" + t, staleTime: 60000, @@ -18,18 +19,19 @@ export default function NeedLogin({ children, needAdmin = false }: { children: J navigate("/login") } console.warn(e) - }, - onSuccess: u => { - if (!u) return - if (!u.is_admin && needAdmin) { - navigate("/login") - } - if (u.uuid == "") { - navigate("/login") - } } }) + useEffect(() => { + if (!u.data) return + if (!u.data.is_admin && needAdmin) { + navigate("/login") + } + if (u.data.uuid == "") { + navigate("/login") + } + }, [navigate, needAdmin, u.data]) + if (!localStorage.getItem("token") || localStorage.getItem("token") == '""') { return } diff --git a/frontend/src/views/Register.tsx b/frontend/src/views/Register.tsx index c5e1702..192f9dd 100644 --- a/frontend/src/views/Register.tsx +++ b/frontend/src/views/Register.tsx @@ -46,25 +46,26 @@ export default function SignUp() { setDisableEmail(true) }, [u.searchParams]) - useRequest(getConfig, { + const server = useRequest(getConfig, { cacheKey: "/api/v1/config", staleTime: 60000, onError: e => { console.warn(e) setRegErr(String(e)) - }, - onSuccess: v => { - if (!v.NeedEmail) return - - const code = u.searchParams.get("code") - if (!code || code == "") { - navigate("/register_email") - return - } - setCode(code) } }) + React.useEffect(() => { + if (!server.data || !server.data.NeedEmail) return + + const code = u.searchParams.get("code") + if (!code || code == "") { + navigate("/register_email") + return + } + setCode(code) + }, [server.data, u.searchParams, navigate]) + const checkList = React.useRef>(new Map())