조건
클릭한 글의 제목이 모달에 뜨게 만들기
풀이
function App() {
let [title, setTitle] = useState(['쌍검사길드에서 닌자시작퀘 받기', '파판14 초보자 가이드 이벤트 진행안내', '귀여운 구부 꼬마친구를 받아보자']);
let [modal, setModal] = useState(false);
let [titleindex, setTitleindex] = useState(0);
return (
<div className="App">
{
title.map(function(a,i){
return (
<div className="list" key={i}>
<h4>{ title[i] }</h4>
<button onClick={()=>{ modal ? setModal(false) : (setModal(true), setTitleindex(i)) } }>🗨</button>
<p>2월 18일 발행</p>
</div>
);
})
}
{modal && <Modal title={title} titleindex={titleindex}/>}
</div>
);
}
function Modal(props){
return(
<div className='modal'>
<h4>{ props.title[props.titleindex] }</h4>
<p>날짜</p>
<p>상세내용</p>
</div>
)
}
- let [titleindex, setTitleindex] = useState(0);로 글 제목의 인덱스 state를 만들었다.
- 부모의 modal을 생성하는 위치에 {modal && <Modal title={title} titleindex={titleindex}/>}로 titleindex를 props로 전송했다.
- 자식 modal의 글 제목에 <h4>{ props.title[props.titleindex] }</h4> title[i] 형태로 받은 props를 넣어주었다.
- 부모의 modal을 토글하는 버튼에 setModal(true)와 함께 titleindex state를 바꿔주는 함수를 같이 넣어주었다.
알게 된 점
자식 modal에서 title의 index를 어떻게 넘겨받을지 계속 시도했는데, 숫자값만 반환하는 새로운 state를 만들면 된다는 쉬운 사실을 간과했다.
출처 : 코딩애플 https://codingapple.com/
'⚛️ React > 문제풀기 (코딩애플: React)' 카테고리의 다른 글
React : 2초 뒤에 사라지는 alert 만들기 (useEffect, 숏서킷평가) (0) | 2023.05.23 |
---|---|
React : 가나다정렬되어도 끄떡없는 상세페이지 불러오기 (useParams, find()) (0) | 2023.05.22 |
React : 데이터 바인딩해서 컴포넌트로 뿌리기 (템플릿 리터럴 Template literal) (0) | 2023.05.18 |
React : input에 글 쓰면 게시글 추가하기 (onChange, 매개변수, trim, splice) (0) | 2023.05.11 |
React : 좋아요버튼 만들기 (숏서킷평가,삼항연산자) (0) | 2023.05.02 |