yourComponent.propTypes = { 屬性1:屬性1的變量類型, 屬性2:屬性2的變量類型 //... }
import React from 'react'
class Son extends React.Component{
render(){ return (<div style ={{padding:30}}> {this.props.number} <br/> {this.props.array} <br/> {this.props.boolean.toString()} </div>) } } class Father extends React.Component{ render(){ return (<Son number = {'1'} array = {'[1,2,3]'} boolean = {'true'} />) } }
import React from 'react' import PropTypes from 'prop-types'; class Son extends React.Component{ render(){ return (<div style ={{padding:30}}> {this.props.number} <br/> {this.props.array} <br/> {this.props.boolean.toString()} </div>) } } Son.propTypes = { number:PropTypes.number, array:PropTypes.array, boolean:PropTypes.bool } class Father extends React.Component{ render(){ return (<Son number = {'1'} array = {'[1,2,3]'} boolean = {'true'} />) } }
Son.propTypes = { optionalArray: PropTypes.array,//檢測數組類型 optionalBool: PropTypes.bool,//檢測布爾類型 optionalFunc: PropTypes.func,//檢測函數(Function類型) optionalNumber: PropTypes.number,//檢測數字 optionalObject: PropTypes.object,//檢測對象 optionalString: PropTypes.string,//檢測字符串 optionalSymbol: PropTypes.symbol,//ES6新增的symbol類型 }
class Father extends React.Component{ render(){ return (<Son number = {null} array = {null} boolean = {null} />) } }
import React from 'react' import PropTypes from 'prop-types'; class Son extends React.Component{ render(){ return (<div style ={{padding:30}}> {this.props.number} </div>) } } Son.propTypes = { number:PropTypes.oneOfType( [PropTypes.string,PropTypes.number] ) } class Father extends React.Component{ render(){ //分別渲染數字的11和字符串的11 return (<div> <Son number = {'字符串11'}/> <Son number = {11}/> </div>) } }
Son.propTypes = { number:PropTypes.oneOf( [12,13] ) }
import React from 'react' import PropTypes from 'prop-types'; class Son extends React.Component{ render(){ return (<div style ={{padding:30}}> {this.props.array} </div>) } } Son.propTypes = { array:PropTypes.arrayOf(PropTypes.number) } class Father extends React.Component{ render(){ return (<div> <Son array = {[1,2,3,4]}/> </div>) } }
PropTypes.shape({ 屬性1:類型1, 屬性2:類型2, //... }),
import React from 'react' import PropTypes from 'prop-types'; class Son extends React.Component{ render(){ return (<div style ={{padding:30}}> {'我的名字叫' + this.props.object.name} <br/> {'我的年齡是' + this.props.object.age} </div>) } } Son.propTypes = { object:PropTypes.shape({ name:PropTypes.string, age:PropTypes.number }) } class Father extends React.Component{ render(){ return (<div> <Son object = {{name:'彭湖灣',age:20}}/> </div>) } }
Son.propTypes = {
number:PropTypes.number
}
import React from 'react'
import PropTypes from 'prop-types';
class Son extends React.Component{ render(){ return (<div style ={{padding:30}}> {this.props.number} </div>) } } Son.propTypes = { number:PropTypes.number } class Father extends React.Component{ render(){ return (<div> <Son /> </div>) } }
Son.propTypes = {
number:PropTypes.number.isRequired
}
Son.propTypes = { prop:function(props,propName,componentName){ if(/*判斷條件*/){ return new Error(/*錯誤的參數*/) } } }
import React from 'react' import PropTypes from 'prop-types'; class Son extends React.Component{ render(){ return (<div style ={{padding:30}}> {this.props.email} </div>) } } Son.propTypes = { email:function(props,propName,componentName){ if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(props[propName])){ return new Error('組件' + componentName+ '裏的屬性' + propName + '不符合郵箱的格式'); } } } class Father extends React.Component{ render(){ return (<div> <Son email = {2314838004}/> </div>) } }
class Son extends React.Component{ static propTypes = { //..類型檢測 } render(){ return (/* 渲染*/) } }
Son.propTypes = {
number:React.PropTypes.number
}