From 327f49bff037da9600504d249dd2274ec4f8a7ff Mon Sep 17 00:00:00 2001 From: tone <3341154833@qq.com> Date: Sun, 18 May 2025 14:30:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0blog=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/(with-header-footer)/blog/page.tsx | 47 +++++++++++++++++-- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/tone-page-web/app/(with-header-footer)/blog/page.tsx b/tone-page-web/app/(with-header-footer)/blog/page.tsx index c35d9d8..a23e2c1 100644 --- a/tone-page-web/app/(with-header-footer)/blog/page.tsx +++ b/tone-page-web/app/(with-header-footer)/blog/page.tsx @@ -1,4 +1,16 @@ +"use client" + +import { Skeleton } from "@/components/ui/skeleton"; +import { BlogApi } from "@/lib/api"; import { useCallback } from "react" +import useSWR from "swr"; +import { + Alert, + AlertDescription, + AlertTitle, +} from "@/components/ui/alert"; +import { AlertCircle } from "lucide-react"; +import { base62 } from "@/lib/utils"; export default function Blog() { const formatNumber = useCallback((num: number) => { @@ -10,14 +22,39 @@ export default function Blog() { return num.toString(); }, []); + const { data: blogs, error, isLoading } = useSWR( + '/api/blogs', + () => BlogApi.list(), + ) + return (
{ - Array.from({ length: 10 }).map(() => ( -
- 标题标题标题标题标题标题 -

描述描asdjkasdas 就叫你健康你健康呢即可述描述描述描述描述描述描述描述描述,描述描述

-

{new Date().toLocaleString()} · {formatNumber(1090)} 次访问

+ isLoading && ( +
+ + + +
+ ) + } + { + error && ( + + + 出错啦 + + {error.message} + + + ) + } + { + blogs && blogs.map((blog) => ( +
+ {blog.title} +

{blog.description}

+

{new Date(blog.createdAt).toLocaleString()} · {formatNumber(blog.viewCount)} 次访问

)) }