blob: c99e40e7dea3f1cf4182f143bacae4b1ded627d2 [file] [log] [blame]
San3yuan03ab0642025-04-29 18:00:25 +08001import { useApi } from '@/hooks/request';
San3yuan292794c2025-06-08 20:02:46 +08002import React, { useCallback, useEffect, useState } from 'react';
San3yuan03ab0642025-04-29 18:00:25 +08003import request from '@/utils/request'
4import style from './postsPanel.module.css'
San3yuana2ee30b2025-06-05 21:20:17 +08005import { useNavigate } from 'react-router';
San3yuan03ab0642025-04-29 18:00:25 +08006
7
8interface panelProps{
9 name:string,
10 url:string,
11 limit:number
12}
13
14const PostsPanel:React.FC<panelProps> = (props) => {
San3yuana2ee30b2025-06-05 21:20:17 +080015 const nav = useNavigate();
16 const fenchData = useCallback(() => request.get(`${props.url}?page=1&size=5`), [props.url])
San3yuan03ab0642025-04-29 18:00:25 +080017 const {data} = useApi(fenchData, true);
San3yuana2ee30b2025-06-05 21:20:17 +080018 const handlePostCheck =(postId:string) =>{
19 nav('/postDetail?postId=' + postId);
20 }
San3yuan292794c2025-06-08 20:02:46 +080021
22 useEffect(()=>{
23 if(data){
24 console.log("data!!!")
25 console.log(data)
26 }
27 }, [data])
28
San3yuan03ab0642025-04-29 18:00:25 +080029 return (
30 <div className={style.panel}>
31 <div className={style.header}>
32 <span className={style.title}>{props.name}</span>
33 <span className={style.more}>更多</span>
34 </div>
San3yuana2ee30b2025-06-05 21:20:17 +080035 <div className={style.content} >
San3yuan292794c2025-06-08 20:02:46 +080036 {data && data.records && data.records.length > 0 ?
37 data.records.map((item: {postId:string, postTitle: string; createdAt: string }, index: number) => (
San3yuana2ee30b2025-06-05 21:20:17 +080038 <div key={index} className={style.item} onClick={()=> handlePostCheck(item.postId)} >
39 <span className={style.text}>{item.postTitle}</span>
San3yuan292794c2025-06-08 20:02:46 +080040 <span>{new Date(item.createdAt).toLocaleString()}</span>
San3yuan03ab0642025-04-29 18:00:25 +080041 </div>
42 )) :(
43 <div>未查询到相关记录</div>
44 )}
45 </div>
46 </div>
47 )
48}
49
50export default PostsPanel;