react

[react]컴포넌트에서 props 사용 방법정리

san2222 2025. 6. 6. 02:05

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번 예제와 같은 유형과 섞어서 쓰는 것도 당연 가능 합니다