From 3402d263c15311530d7fa9e37d361ba77f402634 Mon Sep 17 00:00:00 2001 From: tone <3341154833@qq.com> Date: Mon, 12 May 2025 21:50:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0resource=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource/components/ResourceCard.tsx | 25 +++++++++------- .../(with-header-footer)/resource/page.tsx | 30 +++++++++---------- tone-page-web/lib/api/index.ts | 3 +- tone-page-web/lib/api/resource/index.ts | 1 + tone-page-web/lib/api/resource/list.ts | 6 ++++ 5 files changed, 38 insertions(+), 27 deletions(-) create mode 100644 tone-page-web/lib/api/resource/index.ts create mode 100644 tone-page-web/lib/api/resource/list.ts diff --git a/tone-page-web/app/(with-header-footer)/resource/components/ResourceCard.tsx b/tone-page-web/app/(with-header-footer)/resource/components/ResourceCard.tsx index ac35311..36576f5 100644 --- a/tone-page-web/app/(with-header-footer)/resource/components/ResourceCard.tsx +++ b/tone-page-web/app/(with-header-footer)/resource/components/ResourceCard.tsx @@ -2,35 +2,38 @@ import { ResourceBadge } from "@/components/resource"; import { Card, CardContent } from "@/components/ui/card"; import { Resource } from "@/lib/types/resource"; import Image from "next/image"; +import React from "react"; -interface ResourceCardProps { - resource: Resource; - key: string; +interface ResourceCardProps extends React.HTMLProps { + r: Resource; } -export function ResourceCard({ resource, key }: ResourceCardProps) { +export function ResourceCard({ r, ...props }: ResourceCardProps) { + const [imageError, setImageError] = React.useState(false); + return ( - +
- 资源图片 + onError={() => setImageError(true)} + />}
-
{resource.title}
-
{resource.description}
+
{r.title}
+
{r.description}
{ - resource.tags.map((tag) => ( + r.tags.map((tag) => ( )) } diff --git a/tone-page-web/app/(with-header-footer)/resource/page.tsx b/tone-page-web/app/(with-header-footer)/resource/page.tsx index a923c30..bc3b2db 100644 --- a/tone-page-web/app/(with-header-footer)/resource/page.tsx +++ b/tone-page-web/app/(with-header-footer)/resource/page.tsx @@ -1,6 +1,15 @@ +"use client"; + +import useSWR from "swr"; import { ResourceCard } from "./components/ResourceCard"; +import { ResourceApi } from "@/lib/api"; export default function Resources() { + const { data, isLoading, error } = useSWR( + '/api/resource', + () => ResourceApi.list(), + ); + return (

精心挑选并收藏的资源

@@ -9,21 +18,12 @@ export default function Resources() { ,继续使用或浏览表示您接受协议条款。

- + {data && data.map((resource) => ( + + ))}
) diff --git a/tone-page-web/lib/api/index.ts b/tone-page-web/lib/api/index.ts index 78abf48..16872be 100644 --- a/tone-page-web/lib/api/index.ts +++ b/tone-page-web/lib/api/index.ts @@ -1,3 +1,4 @@ export * as authApi from './auth/index'; export * as verificationApi from './verification/index'; -export * as AdminApi from './admin/index'; \ No newline at end of file +export * as AdminApi from './admin/index'; +export * as ResourceApi from './resource/index'; \ No newline at end of file diff --git a/tone-page-web/lib/api/resource/index.ts b/tone-page-web/lib/api/resource/index.ts new file mode 100644 index 0000000..fd7991d --- /dev/null +++ b/tone-page-web/lib/api/resource/index.ts @@ -0,0 +1 @@ +export * from './list'; \ No newline at end of file diff --git a/tone-page-web/lib/api/resource/list.ts b/tone-page-web/lib/api/resource/list.ts new file mode 100644 index 0000000..848a539 --- /dev/null +++ b/tone-page-web/lib/api/resource/list.ts @@ -0,0 +1,6 @@ +import { Resource } from "@/lib/types/resource"; +import fetcher from "../fetcher"; + +export async function list() { + return fetcher('/api/resource'); +} \ No newline at end of file