import React, { useEffect, useState } from "react";
import { calculateAuctionStatusAndTime } from "../../common/dayjs";
import { Auction_post, AuctionStatus } from "../../types/databaseRetrunTypes";
// ... 그외 import한 거
const AuctionList: React.FC<AuctionListProps> = ({ auctions }) => {
// ... 그외 로직
// 경매 상태를 관리하기 위한 상태
const [auctionStatuses, setAuctionStatuses] = useState<Record<string, AuctionStatus>>({});
useEffect(() => {
const newStatuses: Record<string, AuctionStatus> = {};
auctions?.forEach((auction) => {
const { auctionOver } = calculateAuctionStatusAndTime(
auction.auction_start_date,
auction.auction_end_date
);
newStatuses[auction.auction_id] = auctionOver;
});
setAuctionStatuses(newStatuses);
}, [auctions]);
return (
// ... JSX 렌더링 로직
{auctions.map((auction) => {
const auctionStatus = auctionStatuses[auction.auction_id];
let auctionStatusText;
switch (auctionStatus) {
case AuctionStatus.READY:
auctionStatusText = "경매 전";
break;
case AuctionStatus.START:
auctionStatusText = "진행중";
break;
case AuctionStatus.END:
auctionStatusText = "종료";
break;
default:
auctionStatusText = "경매 상태 알수없음";
}
return (
{auctionStatusText} //상태 표시
);
})}
);
};
export default AuctionList;

[문제] 엄청나게 auction_like가 계속 렌더링 되었다.

[해결]
언제나 범인은 useEffect였다.
// 사용자의 좋아요 상태를 불러오는 쿼리
// const likeQuery = useQuery({
// queryKey: ["likes", userId],
// queryFn: () => fetchLikes(userId!),
// enabled: !!userId,
// });
// // 좋아요 데이터가 로드되었을 때 상태를 업데이트하는 useEffect
// useEffect(() => {
// if (likeQuery.isSuccess && likeQuery.data) {
// setLikes(likeQuery.data as { [key: string]: boolean });
// }
// }, [likeQuery.isSuccess, likeQuery.data]);
const query = connectSupabase
.from("auction_post")
.select(
"*, category(category_name), user_info(user_email), auction_images(image_id, image_path), auction_like ( like_id, user_id, auction_id, created_at )" // <--여기에 추가해서 처음에 불러오는 식으로 구현
)
.order(`${orderBy}`, { ascending: order })
.range(pageParam!, pageParam! + limit);
텍스트를 정리 하고, 내일 발표자료를 만들기 위해 준비했다.
오늘의 한줄평 : 이렇게 모르는게 많은데, 개발자 할 수 있을까 ㅠ.. 열심히 잘 하고 싶은데 매번 내 능력이 부족한거 같다.