标签:开始 hot type 引用 red als 存在 不能 组件
prop-types的主要作用:对props中数据类型进行检测及限制
引用方法:import PropTypes from ‘prop-types‘
用法:
// 基本用法 用来检测数据类型 componentsName.PropTypes = { 参数变量: PropTypes.类型 } // 例子 myComponents.PropTypes = { name: Proptypes.string }
(官方文档原例)
MyComponent.propTypes = { // 你可以将属性声明为以下 JS 原生类型 optionalArray: PropTypes.array, optionalBool: PropTypes.bool, optionalFunc: PropTypes.func, optionalNumber: PropTypes.number, optionalObject: PropTypes.object, optionalString: PropTypes.string, optionalSymbol: PropTypes.symbol, } 检
测是不是能被渲染的元素,function就不能被渲染
MyComponent.propTypes = { // 任何可被渲染的元素(包括数字、字符串、子元素或数组)。 optionalNode: PropTypes.node, }
MyComponent.propTypes = {
optionalMessage: PropTypes.instanceOf(Message),
}
MyComponent.propTypes = { // 你也可以限制你的属性值是某个特定值之一 optionalEnum: PropTypes.oneOf([‘News‘, ‘Photos‘]), }
MyComponent.propTypes = { // 限制它为列举类型之一的对象 optionalUnion: PropTypes.oneOfType([ PropTypes.string, PropTypes.number, PropTypes.instanceOf(Message) ]), }
MyComponent.propTypes = { // 一个指定元素类型的数组 optionalArrayOf: PropTypes.arrayOf(PropTypes.number), }
MyComponent.propTypes = { // 一个指定类型的对象 optionalObjectOf: PropTypes.objectOf(PropTypes.number), }
MyComponent.propTypes = { // 一个指定属性及其类型的对象 optionalObjectWithShape: PropTypes.shape({ color: PropTypes.string, fontSize: PropTypes.number }), }
MyComponent.propTypes = { // 你也可以在任何 PropTypes 属性后面加上 `isRequired` // 后缀,这样如果这个属性父组件没有提供时,会打印警告信息 requiredFunc: PropTypes.func.isRequired, }
MyComponent.propTypes = { // 任意类型的数据 requiredAny: PropTypes.any.isRequired, }
MyComponent.propTypes = { // 你也可以指定一个自定义验证器。它应该在验证失败时返回 // 一个 Error 对象而不是 `console.warn` 或抛出异常。 // 不过在 `oneOfType` 中它不起作用。 customProp: function(props, propName, componentName) { if (!/matchme/.test(props[propName])) { return new Error( ‘Invalid prop `‘ + propName + ‘` supplied to‘ + ‘ `‘ + componentName + ‘`. Validation failed.‘ ); } }, // 不过你可以提供一个自定义的 `arrayOf` 或 `objectOf` // 验证器,它应该在验证失败时返回一个 Error 对象。 它被用 // 于验证数组或对象的每个值。验证器前两个参数的第一个是数组 // 或对象本身,第二个是它们对应的键。 customArrayProp: PropTypes.arrayOf(function(propValue, key, componentName, location, propFullName) { if (!/matchme/.test(propValue[key])) { return new Error( ‘Invalid prop `‘ + propFullName + ‘` supplied to‘ + ‘ `‘ + componentName + ‘`. Validation failed.‘ ); } }) }
// 是一个react元素 MyComponent.propTypes = { optionalElement: PropTypes.element, } // 检测是否是个单个的子代 MyComponent.propTypes = { optionalElement: PropTypes.element.isRequired, }
class Greeting extends React.Component { render() { return ( <h1>Hello, {this.props.name}</h1> ); } } // 为属性指定默认值: Greeting.defaultProps = { name: ‘Stranger‘ }; // 渲染 "Hello, Stranger": ReactDOM.render( <Greeting />, document.getElementById(‘example‘) ); // 另外一种设置默认值的方法 static defaultProps = { name: ‘stranger‘ }
作者:TianYiYang
链接:https://www.jianshu.com/p/d1207c6edc61
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
标签:开始 hot type 引用 red als 存在 不能 组件
原文地址:https://www.cnblogs.com/ygunoil/p/12378224.html