-
React props : 컴포넌트에게 값 전달Study/React 2020. 1. 3. 10:51반응형
컴포넌트 props란?
properties의 줄임말로서, 컴포넌트의 입력값이다.
props는 부모 컴포넌트로부터 자식 컴포넌트로 전달된 데이터를 의미한다.
그리고 props 는 state와 달리 read-only 라는 것에 주의해야한다.
props 사용법
App.js
import React from 'react'; import Hello from './Hello'; function App() { return ( <Hello name="subin" color="blue"/> ); } export default App;
App 컴포넌트에서 Hello 컴포넌트를 불러와서 사용할 때,
name과 color 값을 전달해주고자 한다.
첫 번째 방법: props 파라미터 활용
Hello.js
import React from 'react'; function Hello(props) { console.log(props); return ( <div style={{ color: props.color }}> 안녕하세요 {props.name} </div> ) } export default Hello;
props는 객체 형태로 전달 되는데, 콘솔로그로 props를 찍어보면
{name: 'subin', color: 'blue'} 라고 뜬다.
따라서 두 값을 사용할 때 객체형태로 props.name과 같이 사용하면 된다.
두 번째 방법 : es6문법 destructuring 활용
Hello.js
import React from 'react'; function Hello({name, color}) { return ( <div style={{ color: color }}> 안녕하세요 {name} </div> ) } export default Hello;
es6문법인 destructuring 을 통해서 Hello의 인자로 {name, color} 을 전달한다.
전달받은 props를 바꿔서 사용하고 싶다면?
props는 직접적으로 바꿀 수 없다.
하지만 자식 컴포넌트에서 state에 props 값을 넣어준 후에 바꿔서 사용할 수 는 있다.
import React, {useState} from 'react'; function Hello({name, color}) { const [result, setResult] = useState(name); const onClick = () => { setResult('jenny'); }; return ( <div style={{ color: color }}> <div onClick={onClick}> 안녕하세요 {result} </div> </div> ) } export default Hello;
const [result, setResult] = useState(name);
: 전달 받은 name props를 state 로 관리해준다.
setResult('jenny');
: 그리고 바꾸고자 하는 값을 setResult의 인자로 준다.
defaultProps로 props 기본값 설정
컴포넌트에 props를 지정하지 않았을 때 기본값을 설정할 수 있다.
방법
컴포넌트이름.defaultProps = { key: 'value' }
Hello.js
import React from 'react'; function Hello({name, color}) { return ( <div style={{ color: color }}> 안녕하세요 {name} </div> ) } Hello.defaultProps = { color: 'black' } export default Hello;
index.js
import React from 'react'; import Hello from './Hello'; function App() { return ( <> <Hello name="subin" color="blue"/> <Hello name="subin" /> </> ); } export default App;
props.children
컴포넌트 태그 사이에 넣은 것들을 조회하기 위해서는 props.children을 사용해야한다.
App.js
import React from 'react'; import Hello from './Hello'; import Wrapper from './Wrapper'; function App() { return ( <Wrapper> <Hello name="subin" color="blue"/> <Hello name="subin" /> </Wrapper> ); } export default App;
위와 같이 Wrapper 태그 내부에 있는 Hello 컴포넌트를 보여지게 하려면,
Wrapper.js
import React from 'react'; function Wrapper({children}) { const style = { border: '2px solid black', padding: 20, width: 200 }; return ( <div style={style}> {children} </div> ) } export default Wrapper;
Wrapper 컴포넌트 인자로 디스트럭쳐링한 {children} 을 넣어줘야한다.
반응형'Study > React' 카테고리의 다른 글
React Hooks : useState() 함수 (2) 2020.01.04 React 조건부 렌더링 (0) 2020.01.03 React 문법 : JSX (JavaScript XML) (0) 2020.01.02 React Component 생성 및 사용 (0) 2020.01.01 React 개발 환경 세팅 & React 개발 서버 실행 & Github 연동 (1) 2019.12.31