[React] Props

parkheeddong·2023년 5월 3일

React

목록 보기
7/13
post-thumbnail

Props란?!

우리가 어떠한 값을 컴포넌트에게 전달해줘야 할 때, props 를 사용한다.

📌 Props 기본

App 컴포넌트에서 Hello 컴포넌트를 사용 할 때 name 이라는 값을 전달해주고 싶다면,
컴포넌트에게 전달되는 props 라는 파라미터를 통하여 조회 할 수 있다.
props 는 객체 형태로 전달되며, 만약 name 값을 조회하고 싶다면 props.name 을 조회하면 된다.

// App.js
import React from 'react';
import Hello from './Hello';

function App() {
  return (
    <Hello name="react" />
  );
}

export default App;


// Hello.js
import React from 'react';

function Hello(props) {
  return <div>안녕하세요 {props.name}</div>
}

export default Hello;

📌 여러개의 props

// App.js
import React from 'react';
import Hello from './Hello';

function App() {
  return (
    <Hello name="react" color="red"/>
  );
}

export default App;


// Hello.js
import React from 'react';

function Hello(props) {
  return <div style={{ color: props.color }}>안녕하세요 {props.name}</div>
}

export default Hello;

📌 여러개의 props, 비구조화 할당 (구조 분해)

// Hello.js
import React from 'react';

function Hello({ color, name }) {
  return <div style={{ color }}>안녕하세요 {name}</div>
}

export default Hello;

📌 defaultProps 로 기본값 설정

컴포넌트에 props 를 지정하지 않았을 때 기본적으로 사용 할 값을 설정하고 싶다면 컴포넌트에 defaultProps 라는 값을 설정

// Hello.js
import React from 'react';

function Hello({ color, name }) {
  return <div style={{ color }}>안녕하세요 {name}</div>
}

Hello.defaultProps = {
  name: '이름없음'
}

export default Hello;

📌 props.children

🔔 컴포넌트 태그 사이에 넣은 값을 조회하고 싶을 땐, props.children 을 조회한다.

// Wrapper.js
import React from 'react';

function Wrapper() {
  const style = {
    border: '2px solid black',
    padding: '16px',
  };
  return (
    <div style={style}>

    </div>
  )
}

export default Wrapper;

🔔 이 컴포넌트를 App 에서 사용해보자!

// App.js
import React from 'react';
import Hello from './Hello';
import Wrapper from './Wrapper';

function App() {
  return (
    <Wrapper>
      <Hello name="react" color="red"/>
      <Hello color="pink"/>
    </Wrapper>
  );
} 

export default App;

🔔 브라우저를 확인하면 다음과 같이 Hello 컴포넌트들은 보여지지 않는다.

🔔 내부의 내용이 보여지게 하기 위해서는 Wrapper 에서 props.children 을 렌더링해야 한다.

// Wrapper.js
import React from 'react';

function Wrapper({ children }) {
  const style = {
    border: '2px solid black',
    padding: '16px',
  };
  return (
    <div style={style}>
      {children}
    </div>
  )
}

export default Wrapper;

0개의 댓글