blob: 2312361254dff053263a7a37233f44f114dea0a8 [file] [log] [blame] [edit]
import React ,{useCallback, useState}from "react";
import style from "./postList.module.css";
import SelfStatus from "@/components/selfStatus/selfStatus";
import Corner from "@/components/corner/corner"
import Navbar from "@/components/navbar/navbar";
import { getPosts, unknownAPI } from "@/api/post";
import { useApi } from "@/hooks/request";
import request from "@/utils/request";
import { useEffect } from "react";
import { useNavigate, useSearchParams } from "react-router";
import { MainPostTag } from "@/types/common";
const PostList:React.FC = () => {
const [searchParams] = useSearchParams();
const type = searchParams.get("type") || "";
const nav = useNavigate();
if(type in ['video', 'music', 'Game', 'software']) {
nav('/')
}
const {data:postList, refresh:getPostList} = useApi((tags) => request.get(getPosts + `?keyword&tags=${tags.join(',')}&author`), false);
const [currentPage, setCurrentPage] = useState(1);
const [pageSize, setPageSize] = useState(10);
const [tagIds, setTagIds] = useState<Array<number>>([]);
const handlePostClick = (postId:number) => {
nav(`/postsDetail?postId=${postId}`);
}
useEffect(() => {
getPostList([MainPostTag[type as keyof typeof MainPostTag]]);
},[currentPage, pageSize]);
useEffect(()=>{
console.log(tagIds)
getPostList([...tagIds, MainPostTag[type as keyof typeof MainPostTag]])
},[tagIds])
return (
<div className={style.container}>
<div className={style.left}>
<div className={style.navbar}>
<Navbar current={type}/>
</div>
<div className={style.content}>
{postList && postList.length > 0 ? (
postList.map((post: { postId: number; postTitle: string; postContent: string; createdAt:string }) => (
<div key={post.postId} className={style.contentItem} onClick={() => handlePostClick(post.postId)}>
<h3>{post.postTitle}</h3>
<p>{post.postContent.substring(0, 20)}</p>
<p className={style.createDate}>{new Date(post.createdAt).toLocaleString()}</p>
</div>
))
) : (
<div className={style.noData}>未查询到相关帖子</div>
)}
</div>
</div>
<div className={style.right}>
<div className={style.selfStatus}>
<SelfStatus/>
</div>
<div className={style.filter}>
<Corner setTagIds={setTagIds}/>
</div>
</div>
</div>
)
}
export default PostList;