diff --git a/web/app/friends/page.tsx b/web/app/friends/page.tsx index c9461704..412fa5c4 100644 --- a/web/app/friends/page.tsx +++ b/web/app/friends/page.tsx @@ -1,56 +1,52 @@ "use client"; - -import { Tab, Tabs } from "@mui/material"; import { useState } from "react"; -import { NavigateByAuthState } from "~/components/common/NavigateByAuthState"; -import Matchings from "~/components/match/matching"; -import Requests from "~/components/match/requests"; -export default function Friends() { - const [open, setOpen] = useState(0); +// https://nextjs.org/docs/messages/react-hydration-error#solution-2-disabling-ssr-on-specific-components +import dynamic from "next/dynamic"; +const NoSSRMatchings = dynamic(() => import("~/components/match/matching"), { + ssr: false, +}); +const NoSSRRequests = dynamic(() => import("~/components/match/requests"), { + ssr: false, +}); - const handleChange = (_event: React.SyntheticEvent, newOpen: number) => { - setOpen(newOpen); - }; +export default function Friends() { + const [activeTab, setActiveTab] = useState("matching"); return ( - -
- - - - -
-
- - {open === 0 ? : open === 1 ? : null} - +
+
+ + +
- - ); -} -function TabPanel({ - open, - children, -}: { - open: number; - children: React.ReactNode; -}) { - return ( -
-
{children}
+ {/* コンテンツ部分 */} +
+ {activeTab === "matching" ? : } +
); } - -function a11yProps(index: number) { - return { - id: `tab-${index}`, - "aria-controls": `tabpanel-${index}`, - }; -} diff --git a/web/components/match/matching.tsx b/web/components/match/matching.tsx index 6e402190..c38d7c39 100644 --- a/web/components/match/matching.tsx +++ b/web/components/match/matching.tsx @@ -1,3 +1,4 @@ +"use client"; import { deleteMatch } from "~/api/match"; import { useMatched } from "~/api/user"; import FullScreenCircularProgress from "../common/FullScreenCircularProgress"; @@ -13,15 +14,11 @@ export default function Matchings() { return (
-

- {data && data.length === 0 && ( - <> - 誰ともマッチングしていません。 -
- リクエストを送りましょう! - - )} -

+ {data && data.length === 0 && ( +

+ 誰ともマッチングしていません。 リクエストを送りましょう! +

+ )} {current === "loading" ? ( ) : error ? ( diff --git a/web/components/match/myRequests.tsx b/web/components/match/myRequests.tsx index 451ec328..cc4e72c9 100644 --- a/web/components/match/myRequests.tsx +++ b/web/components/match/myRequests.tsx @@ -1,3 +1,4 @@ +"use client"; import * as request from "~/api/request"; import { usePendingFromMe } from "~/api/user"; import FullScreenCircularProgress from "../common/FullScreenCircularProgress"; diff --git a/web/components/match/othersRequests.tsx b/web/components/match/othersRequests.tsx index 16b141bf..a3c92563 100644 --- a/web/components/match/othersRequests.tsx +++ b/web/components/match/othersRequests.tsx @@ -1,3 +1,4 @@ +"use client"; import request from "~/api/request"; import { usePendingToMe } from "~/api/user"; import FullScreenCircularProgress from "../common/FullScreenCircularProgress"; diff --git a/web/components/match/requests.tsx b/web/components/match/requests.tsx index 8b4b3a98..0e8e9b50 100644 --- a/web/components/match/requests.tsx +++ b/web/components/match/requests.tsx @@ -1,3 +1,4 @@ +"use client"; import MyReq from "./myRequests"; import OthersReq from "./othersRequests";