From 21b87ebd480c9be58cc654e27bedee308c4428a6 Mon Sep 17 00:00:00 2001 From: sayyyho <323psh@naver.com> Date: Sat, 2 Nov 2024 20:35:44 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Fix]=20#2=20-=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=ED=95=98=EA=B8=B0=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/button/Button.tsx | 15 +++-- src/pages/test/Test.tsx | 60 +++++++++++++++---- .../test/_components/button/TestButton.tsx | 12 +++- src/pages/test/_components/button/style.ts | 11 +++- src/pages/test/style.ts | 13 +++- 5 files changed, 86 insertions(+), 25 deletions(-) diff --git a/src/components/common/button/Button.tsx b/src/components/common/button/Button.tsx index b3bc093..38b368b 100644 --- a/src/components/common/button/Button.tsx +++ b/src/components/common/button/Button.tsx @@ -1,13 +1,13 @@ -// Button.tsx - import React from "react"; import styled from "styled-components"; +import { useNavigate } from "react-router-dom"; interface ButtonProps { - link: string; // 링크를 위한 prop + link?: string; // 링크를 위한 prop name: string; // 버튼의 텍스트를 위한 prop type?: "button" | "submit"; // 기본 버튼 타입 $width?: string; // 버튼의 넓이 + onClick?: () => void; // 클릭 핸들러 } const Btn = styled.button` @@ -36,17 +36,22 @@ const Button: React.FC = ({ name, type = "button", $width, + onClick, }) => { + const navigate = useNavigate(); const handleClick = () => { + if (onClick) { + onClick(); // onClick이 존재하면 호출 + } if (link) { - window.location.href = link; + navigate(link); } }; return ( { const { page } = usePageNumber(); const { error } = useUserProfile(); - // console.log(response); + + // 각 페이지에서 선택된 버튼 인덱스를 저장하는 배열 + const [selectedContent, setSelectedContent] = useState([ + -1, -1, -1, -1, -1, + ]); + + // 버튼 클릭 핸들러 + const handleButtonClick = (index: number) => { + const newContent = [...selectedContent]; // 이전 상태 복사 + newContent[page - 1] = index; // 현재 페이지에 해당하는 인덱스 업데이트 + setSelectedContent(newContent); // 상태 업데이트 + }; + + // 다음 버튼 클릭 시 선택된 내용 확인 + const handleNext = () => { + console.log( + `Selected button index for page ${page}:`, + selectedContent[page - 1] + ); + // 필요한 추가 로직을 여기에 작성 + }; + return ( - - - {error} - {TEST_TEXT} - - {TEST_BTN_TEXT.map((text, index) => ( - - ))} + + + + {error} + {TEST_TEXT} + + + + {TEST_BTN_TEXT.map((text, index) => ( + handleButtonClick(index)} // 클릭 핸들러 + /> + ))} + + {page !== 5 ? (