blob: 2916753ccecdf9f668f5e9b68fa5e94ee1999dae [file] [log] [blame]
San3yuan03ab0642025-04-29 18:00:25 +08001import { useApi } from '@/hooks/request';
2import React, { useCallback } from 'react';
3import 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 }
San3yuan03ab0642025-04-29 18:00:25 +080021 return (
22 <div className={style.panel}>
23 <div className={style.header}>
24 <span className={style.title}>{props.name}</span>
25 <span className={style.more}>更多</span>
26 </div>
San3yuana2ee30b2025-06-05 21:20:17 +080027 <div className={style.content} >
San3yuan03ab0642025-04-29 18:00:25 +080028 {data && data.length > 0 ?
San3yuana2ee30b2025-06-05 21:20:17 +080029 data?.map((item: {postId:string, postTitle: string; createdAt: string }, index: number) => (
30 <div key={index} className={style.item} onClick={()=> handlePostCheck(item.postId)} >
31 <span className={style.text}>{item.postTitle}</span>
32 <span>{item.createdAt}</span>
San3yuan03ab0642025-04-29 18:00:25 +080033 </div>
34 )) :(
35 <div>未查询到相关记录</div>
36 )}
37 </div>
38 </div>
39 )
40}
41
42export default PostsPanel;