props를 통해 컴포넌트에 값 전달하기

작업
props
children
props.name
props.color
props.children
진행 상태
완료
진행일시
2021/11/22
학습자

Props란 ?

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

[ props의 기본 사용법 ]

예를 들어서, App 컴포넌트에서 Hello 컴포넌트를 사용 할 때 name 이라는 값을 전달해주고 싶다고 가정해봅시다. 그러면, 이렇게 코드를 작성하면 됩니다.

[ Props를 이용해 App.js → Hello.js로 값 보내기 ]

import React from 'react'; import Hello from './Hello'; import './App.js'; function App() { return ( <Hello name='react' style='red' /> ); } export default App;
JavaScript
복사

[ Props를 이용해 Hello.js에서 값 받기 ]

//값을 받는방법은 2가지이다 // 첫번째 방법 import React from 'react'; import Hello from './Hello'; function Hello(props) { return ( <div style={{color : props.color}}>안녕하세요 {props.name}</div> ); } export default Hello; // 두번 째 방법 import React from 'react'; import Hello from './Hello'; function Hello({color, name}) { return ( <div style={{color}}>안녕하세요 {name}</div> ); } export default Hello;
JavaScript
복사

defaultProps로 기본값 설정

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

[Hello.js]

import React from 'react' function Hello(props) { return <div style={{color : props.color}}>안녕하세요 {props.name}</div> } //defaultProps기본값 설정하기 Hello.defaultProps = { name : '이름없음!!!' } export default Hello;
JavaScript
복사
한번 App 에서 name 이 없는 Hello 컴포넌트를 렌더링해보겠습니다.

[App.js]

import React from 'react'; import Hello from './Hello'; import './App.css' function App() { return ( <> <Hello name='react' color='red' /> <Hello color="pink" /> </> ); } export default App;
JavaScript
복사

[ 실행화면 ]

두번 째 줄에는 props로 받은 name값이 없으므로 기본으로 설정한 defaultProps에 name값이 가지고온다.

[ props.children ]

컴포넌트 태그 사이에 넣은 값을 조회하고 싶을 땐, 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;
JavaScript
복사

[ App.js ]

import React from 'react'; import Hello from './Hello'; import './App.css'; import Wrapper from './Wrapper'; function App() { return () { <Wrapper> <Hello name='react' color='red' /> <Hello color='pink' /> </Wraaper> } }
JavaScript
복사