React propTypes - slahsk/study GitHub Wiki
μ»΄ν¬λνΈμ μ΄λ€ μμ±μ μ¬μ©ν μ μκ³ , μ΄λ€ μμ±μ΄ νμ μ΄λ©°, μ΄λ€ νμμ κ°μ λ°λμ§ λ±μ λͺ μμ μΌλ‘ μ§μ νλ κ²μ΄ μ’λ€. μ΄λ₯Ό μν΄μ protoType λ₯Ό μ μΈνλ€.
- μΈμ λ μ§ μ»΄ν¬λνΈλ₯Ό μ΄κ³ μ΄λ€ μμ±μ΄ νμνμ§, κ·Έλ¦¬κ³ μμ±μ νμμ΄ λ¬΄μμΈμ§ μ μ μλ€.
- λ¬Έμ κ° λ°μν κ²½μ° λ¦¬μνΈκ° μ½μμ μ€λ₯ λ©μμ§λ₯Ό μΆλ ₯ν΄ μ΄λ€ μμ±μ΄ μλͺ» λκ±°λ λλ½λλμ§ , κ·Έλ¦¬κ³ λ¬Έμ κ° λ°μν render λ©μλκ° λ¬΄μμΈμ§ μλ €μ€ μ μλ€.
| μ ν¨μ± κ²μ¬κΈ° | μ€λͺ |
|---|---|
| PropTypes.array | μμ±μ΄ λ°°μ΄μ΄μΌ νλ€. |
| PropTypes.bool | μμ±μ΄ λΆμΈ κ°(true/false) μ΄μ΄μΌ νλ€. |
| PropTypes.func | μμ±μ΄ ν¨μμ¬μΌ νλ€. |
| PropTypes.number | μμ±μ΄ μ«μ(λλ ꡬ문 λΆμμΌλ‘ μ«μλ₯Ό μ»μ μ μλ κ°) μ΄μ΄μΌ νλ€. |
| PropTypes.object | μμ±μ΄ κ°μ²΄μ¬μΌ νλ€. |
| PropTypes.string | μμ±μ΄ λ¬Έμμ΄μ΄μΌ νλ€. |
| μ ν¨μ± κ²μ¬κΈ° | μ€λͺ |
|---|---|
| PropTypes.oneOfType | μμ±μ΄ μ¬λ¬ νμ μ€ νλμΌ μ μλ€. μ: PropTypes.oneOfType([ PropTypes.string, PropTypes.number PropTypes.instanceOf(Message) ]) |
| PropTypes.arryOf | μμ±μ΄ νΉμ λ°°μ΄μ΄μΌ νλ€. μ) PropTypes.arrayOf(PropTypes.number)
|
| PropTypes.objectOf | μμ±μ΄ νΉμ νμμ μμ± κ°μ κ°μ§ κ°μ²΄μ¬μΌ νλ€. μ) PropTypes.objectOf(PropTypes.number)
|
| PropTypes.shape | μμ±μ νΉμ ννλ₯Ό κ°μ§ κ°μ²΄μ¬μΌ νλ€. PropTypes.shape({ color:PropTypes.string, fontSzie: PropTypes.number }) |
| PropTypes.node | μμ±μ΄ λ λλ§ κ°λ₯ν μ΄λ€ κ°μ΄λΌλ λ μμλ€(μ«μ, λ¬Έμ, μμ, λ°°μ΄) |
| PropTypes.element | μμ±μ΄ 리μνΈ μμμ¬μΌ νλ€. |
| PropTypes.instanceof | μμ±μ΄ μ§μ ν ν΄λμ€μ μΈμ€ν΄μ€μ¬μ¬ νλ€(μλ°μ€ν¬λ¦½νΈμ instanceof μ°μ°μλ₯Ό μ΄μ©νλ€.) μ: PropTypes.instanceOf(Message) |
| PropTypes.oneOf | μμ±μ΄ μ΄κ±°νκ³Ό κ°μ΄ νΉμ ν λ²μμ κ°μΌλ‘ νμ λΌμΌ νλ€. μ: PropTypes.oneOf(['News','Photos']) |
import React, {Component,PropTypes} from 'react';
import Card from './Card';
import style from './kanban.css';
class List extends Component {
render() {
var cards = this.props.cards.map((card, i) => {
return <Card key={card.id} id={card.id} color={card.color} title={card.title} description={card.description} tasks={card.tasks}/>;
});
return (
<div className={style.list}>
<h1>{this.props.title}</h1>
{cards}
</div>
);
}
};
List.propTypes = {
title: PropTypes.string.isRequired,
cards : PropTypes.arrayOf(PropTypes.object)
};
export default List;import React,{Component, PropTypes} from 'react';
import CheckList from './CheckList';
import marked from 'marked';
import style from './kanban.css';
let titlePropType = (props, propName, ComponentName) => {
if(props[propName]){
let value = props[propName];
if(typeof value !== 'string' || value.length > 80){
return Error('${propName} in ${ComponentName} is longer than 80 character');
}
}
};
class Card extends Component{
...
return (
...
);
}
};
Card.propTypes = {
id : PropTypes.number,
title: titlePropType,
description : PropTypes.string,
color : PropTypes.string,
tasks : PropTypes.arrayOf(PropTypes.object)
};
export default Card;