props

민돌·2023년 9월 18일
0

React

목록 보기
6/9
post-custom-banner

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

props의 기본 사용법

App 컴포넌트에서 Hello 컴포넌트를 사용할 때 name이라는 값을 전달해주고 싶다고 가정해보자.

App.js

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

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

export default App;

그럼, Hello 컴포넌트에서 전달받은 name 값을 사용 하고 싶을 땐 어떻게 하면 좋을까?

Hello.js

import React from 'react';

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

export default Hello;

컴포넌트에게 전달된 props는 파라미터를 통하여 조회할 수 있다.
props는 객체 형태로 전달되며, name 값을 조회하고 싶다면 props.name을 조회하면 된다.


여러개의 props, 비구조화 할당

Hello 컴포넌트에 또 다른 하나의 props를 더 전달해보자. "color"

App.js

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

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

export default App;

Hello.js

improt React from 'react';

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

export default Hello;

props 내부의 값을 조회 할 때마다 props.를 입력하고 있는데, 함수의 파라미터에서 비구조화 할당 문법을 사용하면 조금더 간결하게 작성 가능하다.

Hello.js

import React from 'react';

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

export default Hello;

Hello.js


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;

App.js

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

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

export default App;

defaultProps


props.children

컴포넌트 태그 사이에 넣은 값을 조회하고 싶을 땐, 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.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 컴포넌트들이 보여지지 않을 것이다.
props.children
내부의 내용이 보여지게 하기 위해선 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;

props.children2

📚Reference
5. props 를 통해 컴포넌트에게 값 전달하기

post-custom-banner

0개의 댓글