카테고리 없음
[REACT] props : 자식이 부모의 state 가져다쓰고 싶을 때
dmscks3126
2025. 2. 24. 17:26
자식 컴포넌트가 부모 컴포넌트에 있던 state를 쓰고 싶으면
그냥 쓰면 안되고 props로 전송해서 써야한다.
예시와 함께 보자.
<Modal>안에 글제목 state 가 필요하다면?
function App (){
let [글제목, 글제목변경] = useState(['남자코트 추천', '강남 우동맛집', '파이썬독학']);
return (
<div>
<Modal></Modal>
</div>
)
}
function Modal(){
return (
<div className="modal">
<h4>{ 글제목[0] }</h4>
<p>날짜</p>
<p>상세내용</p>
</div>
)
}
이렇게 하면될까? --> 안된다!
▲
왜냐면 글제목이라는 state 변수는 function App()에 있지 function Modal()에 없기 때문
자바스크립트에선 다른 함수에 있는 변수를 마음대로 가져다쓸 수 없다.
그러면?
컴포넌트 2개가 부모/자식 관계인 경우엔 가능하다.
(다른 컴포넌트 안에 있는 컴포넌트를 자식컴포넌트라고 부름)
부모 컴포넌트의 state를 자식 컴포넌트로 전송해줄 수 있는데,
그럼 자식도 사용가능하다.
전송시엔 props라는 문법을 사용한다.
props로 부모 -> 자식 state 전송하는 법
1. 자식컴포넌트 사용하는 곳에 가서 <자식컴포넌트 작명={state이름} />
2. 자식컴포넌트 만드는 function으로 가서 props라는 파라미터 등록 후 props.작명 사용
예시)
function App (){
let [글제목, 글제목변경] = useState(['남자코트 추천', '강남 우동맛집', '파이썬독학']);
return (
<div>
<Modal 글제목={글제목}></Modal>
</div>
)
}
function Modal(props){
return (
<div className="modal">
<h4>{ props.글제목[0] }</h4>
<p>날짜</p>
<p>상세내용</p>
</div>
)
}
(참고1.)
props는 <Modal 이런거={이런거} 저런거={저런거}> 이렇게 10개 100개 1000개 무한히 전송이 가능
(참고2.) 꼭 state만 전송할 수 있는건 아니다.
<Modal 글제목={변수명}> 일반 변수, 함수 전송도 가능하고
<Modal 글제목="강남우동맛집"> 일반 문자전송은 중괄호 없이 이렇게 해도 된다.
▲ 자식 → 부모 패륜방향 전송은 불가능
▲ 옆집 컴포넌트로의 불륜전송도 불가능
출처: 코딩애플 리액트 강의