diff --git a/src/app/page.tsx b/src/app/page.tsx index 4b20048..3dfd12f 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,7 +1,6 @@ 'use client'; -import { useEffect, useState, forwardRef, Ref } from "react"; -import { useSearchParams } from "next/navigation"; +import { useEffect, useState, forwardRef, Ref, Suspense } from "react"; import Image from "next/image"; import Link from "next/link"; import Tippy from "@tippyjs/react"; @@ -59,36 +58,13 @@ TippyWrapper.displayName = 'TippyWrapper'; export default function Home() { const [userInfo, setUserInfo] = useState({ public_repos: 0, followers: 0 }); - - useEffect(() => { - async function fetchUserInfo() { - try { - const response = await fetch("https://api.github.com/users/imnyang"); - const data = await response.json(); - setUserInfo({ public_repos: data.public_repos, followers: data.followers }); - } catch (error) { - console.error("Error fetching user info:", error); - } - } - - fetchUserInfo(); - }, []); - - const searchParams = useSearchParams(); const [imageSrc, setImageSrc] = useState("https://f.imnyang.xyz/profile/imnyang.webp"); const [gotoHref, setGotoHref] = useState("/"); const [isMobile, setIsMobile] = useState(false); useEffect(() => { - const handleResize = () => { - setIsMobile(window.innerWidth <= 768); - }; - handleResize(); // 초기화 시점에 호출 - window.addEventListener('resize', handleResize); - return () => window.removeEventListener('resize', handleResize); - }, []); + const searchParams = new URLSearchParams(window.location.search); - useEffect(() => { const updateImageSrc = () => { if (searchParams.has("kawaii")) { setImageSrc("https://f.imnyang.xyz/profile/hatchu_imnyang.webp"); @@ -116,7 +92,30 @@ export default function Home() { }; updateImageSrc(); - }, [searchParams]); + }, []); + + useEffect(() => { + async function fetchUserInfo() { + try { + const response = await fetch("https://api.github.com/users/imnyang"); + const data = await response.json(); + setUserInfo({ public_repos: data.public_repos, followers: data.followers }); + } catch (error) { + console.error("Error fetching user info:", error); + } + } + + fetchUserInfo(); + }, []); + + useEffect(() => { + const handleResize = () => { + setIsMobile(window.innerWidth <= 768); + }; + handleResize(); // 초기화 시점에 호출 + window.addEventListener('resize', handleResize); + return () => window.removeEventListener('resize', handleResize); + }, []); interface SocialLinkProps { href: string; @@ -142,23 +141,24 @@ export default function Home() { ); return ( -
-
- Profile -

hyun._.suk

-
- {isMobile && ( - - )} - - - - + Loading...
}> +
+
+ Profile +

hyun._.suk

+
+ {isMobile && ( + + )} + + + + +
-
-
- {events.map((event, index) => ( -
+
+ {events.map((event, index) => ( +

{event.date}

{event.link && ( @@ -169,9 +169,10 @@ export default function Home() { )} {!event.link && {event.description}}
-
- ))} +
+ ))} +
-
+ ); } \ No newline at end of file