props는 부모 컴포넌트에서 자식 컴포넌트로 단방향으로 정보를 전달하는 방법이다
props는 properties의 줄임말로 컴포넌트에 전달되는 속성값이다
다만, props를 너무 별생각 없이 남발하면 props drilling이 일어나 상태관리에 문제가 생길 수 있으므로
useContext 혹은 Redux 등 전역 상태 관리 방식을 사용해야된다
1. 예제(기본 props 전달 예제)
//부모컴포넌트
import React from "react";
import Welcome from "./Welcome";
function App() {
return (
<div>
<Welcome name="홍길동" />
</div>
);
}
export default App;
import React from "react";
function Welcome(props) {
return <h1>안녕하세요, {props.name}님!</h1>;
}
export default Welcome;
하위 컴포넌트로 Wellcome을 만들어 주었다(당연.. 컴포넌트 명은 대문자로)
App컴포넌트에서 Wellcome태그 속성으로 name 그리고 값은 홍길동 같이 코드를 짜면 된다
당연 둘 다 바꿔도 된다
예를 들면 이렇게 "<Welcome user="신짱구" />" 물론 부모컴포넌트에서 바꾸면 자식 컴포넌트도 props.user 로 바꿔야 된다
{
name: "홍길동"
}
그래서 props는 객체 형태로 전달되기 때문에 이러한 형태로 전달된다고 생각하면 된다
2. 구조분해 할당으로 props 받기
import React from "react";
import Welcome from "./Welcome";
function App() {
return (
<div>
<Welcome name="홍길동" age={25} job="프론트엔드 개발자" />
</div>
);
}
export default App;
import React from "react";
function Welcome({ name, age, job }) {
return (
<div>
<h1>안녕하세요, {name}님!</h1>
<p>나이: {age}</p>
<p>직업: {job}</p>
</div>
);
}
export default Welcome;
1번 예제랑 거의 비슷한데 하위 컴포넌트에서 구조분해할당해서 받을 수 있다
알아보기 편해 보인 듯하다?
당연히 props를 사용하여 배열,함수 등 보낼 수 있다
3. children 사용법
//부모컴포넌트
import React from "react";
import Welcome from "./Welcome";
function App() {
return (
<div>
<Welcome>
<h2>환영합니다!</h2>
<p>오늘도 즐거운 하루 보내세요 :)</p>
</Welcome>
</div>
);
}
export default App;
//자식 컴포넌트
import React from "react";
function Welcome({ children }) {
return (
<div className="welcome-box">
{children}
</div>
);
}
export default Welcome;
children은 html태그를 통째로 전달해준다고 합니다
welcome 태그 안에 h2, p 태그의 내용이 클래스네임이 welcome-box인 태그 안으로 들어가서 렌더링 됩니다
welcome컴포넌트에 children은 고정된 이름으로 바꿀 수 없다고 합니다
구조 분해 할당 저 부분에 children이라고 적어줘야 쓸 수 있습니다
위에 1,2번 예제와 같은 유형과 섞어서 쓰는 것도 당연 가능 합니다
'react' 카테고리의 다른 글
리액트 Hook 완전 정복: useEffect 제대로 이해하기 (2) | 2025.07.31 |
---|---|
2025년 vite로 리액트 설치하는 방법!(npm사용) (0) | 2025.03.19 |