Skip to content

Commit e5dd248

Browse files
committed
Fix: handleModalOpen linkcard 컴포넌트 내부에서 호출
1 parent 3cce7a2 commit e5dd248

File tree

2 files changed

+16
-25
lines changed

2 files changed

+16
-25
lines changed

components/Link/LinkCard.tsx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@ interface LinkCardProps {
1717
url: string;
1818
createdAt: string;
1919
};
20-
openEdit?: () => void;
21-
openDelete?: () => void;
2220
}
2321

24-
const LinkCard = ({ openEdit, openDelete, info }: LinkCardProps) => {
22+
const LinkCard = ({ info }: LinkCardProps) => {
2523
const [isSubscribed, setIsSubscribed] = useState(info.favorite || false);
2624
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
27-
const { isOpen: isModalOpen } = useModalStore();
25+
const { isOpen, openModal } = useModalStore();
2826
const { updateFavorite } = useLinkCardStore();
2927

3028
const formattedDate = info.createdAt?.slice(0, 10).replace(/-/g, ".");
@@ -35,8 +33,8 @@ const LinkCard = ({ openEdit, openDelete, info }: LinkCardProps) => {
3533

3634
// 모달이 열릴 때 드롭다운 닫기
3735
useEffect(() => {
38-
if (isModalOpen) setIsDropdownOpen(false);
39-
}, [isModalOpen]);
36+
if (isOpen) setIsDropdownOpen(false);
37+
}, [isOpen]);
4038

4139
// 즐겨찾기 버튼 클릭 시 호출되는 함수
4240
const handleFavoriteToggle = async () => {
@@ -52,14 +50,22 @@ const LinkCard = ({ openEdit, openDelete, info }: LinkCardProps) => {
5250
// dropdown 버튼
5351
const toggleDropdown = () => setIsDropdownOpen((prev) => !prev);
5452

53+
const handleModalOpen = (
54+
type: "EditLink" | "DeleteLinkModal",
55+
link: string,
56+
linkId: number
57+
) => {
58+
openModal(type, { link, linkId });
59+
};
60+
5561
const dropdownItems = [
5662
{
5763
label: "수정하기",
58-
onClick: openEdit,
64+
onClick: () => handleModalOpen("EditLink", info.url, info.id),
5965
},
6066
{
6167
label: "삭제하기",
62-
onClick: openDelete,
68+
onClick: () => handleModalOpen("DeleteLinkModal", info.url, info.id),
6369
},
6470
];
6571

pages/link/index.tsx

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ const LinkPage = ({
5252
}: LinkPageProps) => {
5353
const router = useRouter();
5454
const { search } = router.query;
55-
const { isOpen, openModal } = useModalStore();
5655
const { linkCardList, setLinkCardList } = useLinkCardStore();
56+
const { isOpen } = useModalStore();
5757
const [folderList, setFolderList] = useState(initialFolderList);
5858

5959
// 링크페이지의 query가 바뀌면 새로운 리스트로 업데이트 해주는 훅
@@ -64,14 +64,6 @@ const LinkPage = ({
6464
setLinkCardList(initialLinkList);
6565
}, [initialLinkList, setLinkCardList]);
6666

67-
const handleModalOpen = (
68-
type: "EditLink" | "DeleteLinkModal",
69-
link: string,
70-
linkId: number
71-
) => {
72-
openModal(type, { link, linkId });
73-
};
74-
7567
return (
7668
<>
7769
<div className="bg-gray100 w-full h-[219px] flex justify-center items-center">
@@ -91,14 +83,7 @@ const LinkPage = ({
9183
</div>
9284
<CardsLayout>
9385
{linkCardList.map((link) => (
94-
<LinkCard
95-
key={link.id}
96-
openEdit={() => handleModalOpen("EditLink", link.url, link.id)}
97-
openDelete={() =>
98-
handleModalOpen("DeleteLinkModal", link.url, link.id)
99-
}
100-
info={link}
101-
/>
86+
<LinkCard key={link.id} info={link} />
10287
))}
10388
</CardsLayout>
10489
<Pagination totalCount={totalCount} />

0 commit comments

Comments
 (0)