"use client" import { useState, useEffect } from "react" import { ChevronLeft, Search, Filter, RefreshCw } from "lucide-react" import { Card } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Avatar } from "@/components/ui/avatar" import { useRouter } from "next/navigation" import { Skeleton } from "@/components/ui/skeleton" import { format } from "date-fns" import { Badge } from "@/components/ui/badge" import { Separator } from "@/components/ui/separator" import Image from "next/image" import { cn } from "@/lib/utils" // 模拟数据接口 interface LikeRecord { id: number user: { avatar: string nickname: string } likedBy: { avatar: string nickname: string } likeTime: string content: { type: 'text' | 'image' | 'text-image' text?: string images?: string[] } } // 模拟数据 const mockLikeRecords: LikeRecord[] = [ { id: 1, user: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Alice", nickname: "小红花" }, likedBy: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Bob", nickname: "蓝色海洋" }, likeTime: "2023-12-15T10:30:00", content: { type: "text", text: "今天天气真好,阳光明媚!想出去走走看看这个美丽的世界。" } }, { id: 2, user: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Charlie", nickname: "绿野仙踪" }, likedBy: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=David", nickname: "快乐精灵" }, likeTime: "2023-12-14T15:45:00", content: { type: "image", images: ["https://picsum.photos/id/237/300/200", "https://picsum.photos/id/238/300/200"] } }, { id: 3, user: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Eve", nickname: "紫色梦想" }, likedBy: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Frank", nickname: "阳光男孩" }, likeTime: "2023-12-13T09:15:00", content: { type: "text-image", text: "分享一下我的旅行照片,希望大家喜欢!", images: ["https://picsum.photos/id/239/300/200"] } }, { id: 4, user: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Grace", nickname: "月光星辰" }, likedBy: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Henry", nickname: "风之子" }, likeTime: "2023-12-12T18:20:00", content: { type: "text", text: "学习编程真的很有趣,每天都有新发现。希望能和大家一起进步!" } }, { id: 5, user: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Ivy", nickname: "彩虹糖果" }, likedBy: { avatar: "https://api.dicebear.com/7.x/avataaars/svg?seed=Jack", nickname: "幸运草" }, likeTime: "2023-12-11T11:05:00", content: { type: "text-image", text: "今天做了一道新菜,味道超级赞!分享食谱:先准备好所有食材...", images: ["https://picsum.photos/id/240/300/200", "https://picsum.photos/id/241/300/200"] } } ]; export default function LikeRecordsPage() { const router = useRouter() const [loading, setLoading] = useState(false) const [searchTerm, setSearchTerm] = useState("") const [records, setRecords] = useState(mockLikeRecords) const [currentPage, setCurrentPage] = useState(1) const [total, setTotal] = useState(mockLikeRecords.length) const pageSize = 10 // 模拟加载数据 const fetchRecords = async (page: number, searchTerm?: string) => { setLoading(true) // 模拟API请求延迟 await new Promise(resolve => setTimeout(resolve, 800)) // 实际项目中这里应该调用真实API let filteredRecords = [...mockLikeRecords] if (searchTerm) { filteredRecords = mockLikeRecords.filter(record => record.user.nickname.includes(searchTerm) || record.likedBy.nickname.includes(searchTerm) || (record.content.text && record.content.text.includes(searchTerm)) ) } setRecords(filteredRecords) setTotal(filteredRecords.length) setLoading(false) } useEffect(() => { fetchRecords(currentPage, searchTerm) }, [currentPage]) const handleSearch = () => { setCurrentPage(1) fetchRecords(1, searchTerm) } const handleRefresh = () => { fetchRecords(currentPage, searchTerm) } return (

点赞记录

setSearchTerm(e.target.value)} onKeyDown={(e) => e.key === 'Enter' && handleSearch()} />
{loading ? ( // 加载状态
{Array.from({ length: 3 }).map((_, index) => (
))}
) : ( // 记录列表
{records.length === 0 ? ( 暂无点赞记录 ) : ( records.map(record => (
{record.user.nickname}
{record.user.nickname}
内容发布者
{format(new Date(record.likeTime), 'yyyy-MM-dd HH:mm')}
{record.content.text && (

{record.content.text}

)} {record.content.images && record.content.images.length > 0 && (
{record.content.images.map((image, idx) => (
{`内容图片
))}
)}
{record.likedBy.nickname}
{record.likedBy.nickname} 点赞了这条内容
)) )}
)} {!loading && total > pageSize && (
第 {currentPage} 页,共 {Math.ceil(total / pageSize)} 页
)}
) }