注 : React.PropTypes 在 React v15.5 版本后已经移到了 prop-types 库。
import PropTypes from 'prop-types'
render(){
return (
<div>
<div>111</div>
//子组件可以{...this.props}这样获取到当前组件的父组件传来的所有props
<Child {...this.props}></Child>
</div>
)
}
// 定义一个默认的props
const defaultProps = {
userId:111111111
}
CompontentsName.propTypes = { userId: PropTypes.number.isRequired }
// 将定义的props传进去
CompontentsName.defaultProps = defaultProps;
//更多验证器说明如下 : MyComponent.propTypes = { // 可以声明 prop 为指定的 JS 基本数据类型,默认情况,这些数据是可选的 optionalArray: PropTypes.array, optionalBool:PropTypes.bool, optionalFunc:PropTypes.func, optionalNumber:PropTypes.number, optionalObject:PropTypes.object, optionalString:PropTypes.string, // 可以被渲染的对象 numbers, strings, elements 或 array optionalNode:PropTypes.node, // React 元素 optionalElement:PropTypes.element, // 用 JS 的 instanceof 操作符声明 prop 为类的实例。 optionalMessage:PropTypes.instanceOf(Message), // 用 enum 来限制 prop 只接受指定的值。 optionalEnum:PropTypes.oneOf(['News', 'Photos']), // 可以是多个对象类型中的一个 optionalUnion:PropTypes.oneOfType([ PropTypes.string, PropTypes.number, PropTypes.instanceOf(Message) ]), // 指定类型组成的数组 optionalArrayOf:PropTypes.arrayOf(PropTypes.number), // 指定类型的属性构成的对象 optionalObjectOf:PropTypes.objectOf(PropTypes.number), // 特定 shape 参数的对象 optionalObjectWithShape:PropTypes.shape({ color:PropTypes.string, fontSize:PropTypes.number }), // 任意类型加上 `isRequired` 来使 prop 不可空。 requiredFunc:PropTypes.func.isRequired, // 不可空的任意类型 requiredAny:PropTypes.any.isRequired, // 自定义验证器。如果验证失败需要返回一个 Error 对象。不要直接使用 `console.warn` 或抛异常,因为这样 `oneOfType` 会失效。 customProp: function(props, propName, componentName) { if (!/matchme/.test(props[propName])) { return new Error('Validation failed!'); } } } }