属性默认值和类型检查
属性默认值
通过静态属性defaultProps告知 react 属性默认值
函数组件
混合属性默认值和属性传入值在调用函数之前完成
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import React from "react";
export default function FunctionDefaultProps(props) { return ( <div> 姓名:{props.name}, 年龄:{props.age} </div> ); }
FunctionDefaultProps.defaultProps = { name: "xyq", age: 21, };
|
类组件
混合属性默认值和属性传入值在运行构造函数函数之前完成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import React, { Component } from "react";
export default class ClassDefaultProps extends Component { render() { return ( <div> 名字:{this.props.name} 年龄:{this.props.age} </div> ); } }
ClassDefaultProps.defaultProps = { name: "xyq", age: 21, };
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import React, { Component } from "react";
export default class ClassDefaultProps extends Component { static defaultProps = { name: "xyq", age: 21, }; render() { return ( <div> 名字:{this.props.name} 年龄:{this.props.age} </div> ); } }
|
类型检查
使用库:prop-type
对组件调用静态属性propTypes告知 react 如何检查属性
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
| PropTypes.any: PropTypes.array: PropTypes.bool: PropTypes.func: PropTypes.number: PropTypes.object: PropTypes.string: PropTypes.symbol:
PropTypes.node: PropTypes.element: PropTypes.elementType: PropTypes.instanceOf(构造函数): PropTypes.oneOf([xxx, xxx]): PropTypes.oneOfType([xxx, xxx]); PropTypes.arrayOf(PropTypes.XXX): PropTypes.objectOf(PropTypes.XXX): PropTypes.shape(对象): PropTypes.exact({...}):
属性: function(props, propName, componentName) { }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import React, { Component } from "react"; import PropTypes from "prop-types"; export default class PropTypeUse extends Component { static propTypes = { a: PropTypes.string, b: PropTypes.number.isRequired, c: PropTypes.bool, d: PropTypes.node.isRequired, e: PropTypes.shape({ name: PropTypes.string, age: PropTypes.number, sex: PropTypes.oneOf(["男", "女"]), }), }; render() { return <div>{this.props.a}</div>; } }
|