Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Hook
- 양살치살
- docker
- react
- Replacation
- 고릴라볼링장
- 강다니엘
- DockerCompose
- react component
- MariaDB
- SetMail
- 오뚜기숯불소금구이
- nginx
- Spring
- 진1926
- 바스트로37
- useEffect
- SpringCamp
- Java
- SpringCamp2017
- 전나라동동공주
- SpringCamp2019
- NapuCon2016
- State
- NVM
- 판교
- BDD
- 오삼철판볶음
- 신미낙지
- SpockFramework
Archives
- Today
- Total
Note
React Prop 본문
1. 개요
React의 Props는 Properties를 줄인 용어로 컴포넌트의 속성을 의미합니다.
props는 부모 컴포넌트에서 자식 컴포넌트를 선언할 때 지정하고, 자식컴포넌트에서는 props 변수를 사용할 수 있습니다.
부모컴포넌트에서는 자식컴포넌트를 명시할 때 속성을 지정할 수 있는데 이는 값이 될 수도 있고 함수가 될 수도 있습니다.
또한 자식컴포넌트의 자식을 명시해서 전달할 수 있습니다.(자식 컴포넌트에서 사용하지 않으면 의미가 없습니다.)
자식 컴포넌트에서는 부모에서 prop을 전달하지 않았을 때 사용할 기본 속성값을 지정할 수 있고, PropTypes를 통해 props의 타입이나 필수 속성여부를 지정할 수도 있습니다.
props의 이름은 일부 미리 정의된 이름(children)을 제외하고 자식 컴포넌트에서 정의할 수 있습니다.
Component.defaultProps를 통해 속성의 기본 값을 지정할 수 있고, Component.propTypes를 통해 속성의 형태나 필수여부를 명시할 수 있습니다.
2. PropTypes
종류 | 설명 |
array | 배열 |
arrayOf(X) | X로 이루어진 배열 |
bool | boolean |
func | 함수 |
number | 숫자 |
object | 객체 |
string | 문자열 |
symbol | ES6 symbol |
node | 자체적으로 렌더링 가능한 모든 것 |
instanceOf(X) | X 클래스의 인스턴스 |
oneOf([x, y]) | x, y 중 하나(배열의 값 중 하나) |
oneOfType([X, Y]) | X, Y타입 중 하나(배열의 타입 중 하나의 타입) |
objectOf(X) | 객체의 모든 키 값이 X와 같은 타입으로 이루어진 객체 |
shape({x: X, y: Y}) | 지정된 객체의 모양을 가진 객체 |
any | 무엇이든 상관없음 |
3. 예시
ChildComponent.js(함수형 컴포넌트)
import React from "react";
import PropTypes from "prop-types";
const ChildComponent = (props) => {
return (
<React.Fragment>
<div onClick={props.handleClick}>Child Component: {props.description}</div>
<div>I'm {props.name}!</div>
<div>
<span>children: </span>
{props.children}
</div>
</React.Fragment>
)
};
ChildComponent.defaultProps = {
name: "ChildComponent"
};
ChildComponent.propTypes = {
description: PropTypes.string,
handleClick: PropTypes.func.isRequired
};
export default ChildComponent;
ChildComponent.js(클래스형 컴포넌트)
import React from "react";
import PropTypes from "prop-types";
class ChildComponent extends React.Component {
render() {
const {description, name, children, handleClick} = this.props;
return (
<React.Fragment>
<div onClick={handleClick}>Child Component: {description}</div>
<div>I'm {name}!</div>
<div>
<span>children: </span>
{children}
</div>
</React.Fragment>
)
}
}
ChildComponent.defaultProps = {
name: "ChildComponent"
};
ChildComponent.propTypes = {
description: PropTypes.string,
handleClick: PropTypes.func.isRequired
};
export default ChildComponent;
App.js
import React from 'react';
import './App.css';
import ChildComponent from "./ChildComponent";
const App = () => {
const handleChildClick = () => {
console.log('click child component!');
};
return (
<React.Fragment>
<div>Hello react!</div>
<ChildComponent
description="This is child component!"
handleClick={handleChildClick}>
<div>this is children.</div>
</ChildComponent>
</React.Fragment>
)
};
export default App;
'Dev > React' 카테고리의 다른 글
React Lifecycle (0) | 2019.12.15 |
---|---|
React Events (0) | 2019.12.15 |
React State (0) | 2019.12.15 |
React Component (0) | 2019.12.08 |
React 시작하기 (0) | 2019.12.08 |
Comments