美文网首页
react中props类型检测

react中props类型检测

作者: 放任自由f0 | 来源:发表于2019-04-22 17:41 被阅读0次

安装

// 安装
npm install --save prop-types

运用

//引入
import PropTypes from 'prop-types';
// 创建类
class Header extends Component{
}
//类型检测
Header.propTypes={
  navList:PropTypes.array,
  title:PropTypes.string
}
//默认数据
Header.defaultProps={
  title:'欢迎光临'
}
/***********************************************************/
// 或者
class Header extends Component {
  static defaultProps = {
    title:'欢迎光临'
  }
  static propTypes={
    navList:PropTypes.array,
    title:PropTypes.string
  }
  render() {
    return (
      <div> {this.props.title}</div>
    )
  }
}

设置属性为必须传递的值

Header.propTypes={
  navList:PropTypes.array,
  title:PropTypes.string.isRequired
}

多重嵌套类型检测

// An array of a certain type
optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
// An object with property values of a certain type
  optionalObjectOf: PropTypes.objectOf(PropTypes.number),
  //示例
  static propTypes = {
        todoList:PropTypes.arrayOf(PropTypes.shape({
            id:PropTypes.string.isRequired,
            text:PropTypes.string
        }))
    }

shape检测不同对象的不同属性的不同数据类型

// An object taking on a particular shape
  optionalObjectWithShape: PropTypes.shape({
    optionalProperty: PropTypes.string,
    requiredProperty: PropTypes.number.isRequired
  })
  //示例
  static propTypes = {
     object:PropTypes.shape({
         name:PropTypes.string,
         age:PropTypes.number
      })
 }

可以检测的类型

optionalArray: PropTypes.array,
optionalBool: PropTypes.bool,
optionalFunc: PropTypes.func,
optionalNumber: PropTypes.number,
optionalObject: PropTypes.object,
optionalString: PropTypes.string,
optionalSymbol: PropTypes.symbol,
//任何可被渲染的元素(包括数字、字符串、子元素或数组)。
  optionalNode: PropTypes.node,
  // 一个 React 元素
  optionalElement: PropTypes.element,
  // 你也可以声明属性为某个类的实例,这里使用 JS 的
  // instanceof 操作符实现。
  optionalMessage: PropTypes.instanceOf(Message),
  // 你也可以限制你的属性值是某个特定值之一
  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),

  // 一个指定属性及其类型的对象
  optionalObjectWithShape: PropTypes.shape({
    color: PropTypes.string,
    fontSize: PropTypes.number
  }),

  // 你也可以在任何 PropTypes 属性后面加上 `isRequired` 
  // 后缀,这样如果这个属性父组件没有提供时,会打印警告信息
  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(
        '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中props类型检测

    安装 运用 设置属性为必须传递的值 多重嵌套类型检测 shape检测不同对象的不同属性的不同数据类型 可以检测的类型

  • 013|React之类型检察

    在React中,可以添加对props类型的检察。如: 觉见的ProtoTypes: React中还可以通过defa...

  • React Native && TypeScript: 三、Ty

    在传统Javascript中,React组件由PropTypes声明props的类型,但是在弱类型的Javascr...

  • PropTypes和defaultPropTypes

    一、用途 用于子组件检测props的数据类型是否正确,给props中的属性添加类型约束,如果不对,会抛出警告 二、...

  • PropTypes和defaultProps

    react中可以引入PropTypes来对props进行类型的校验import PropTypes from "p...

  • React中的Props类型检查PropTypes

    官方提示:从React V15.5,之前的React.PropTypes会在未来版本移除,请使用 prop-typ...

  • React 中的转发ref

    在 React V16.3� 中react引入了: React.forward((props, ref) => R...

  • react中的state和props

    前面提过react中的state和props是react组件中的两大部分,有很多人分不清state和props,这...

  • React思考题

    1、组件为什么要大写? 2、props如何声明默认值 方法一: 方法二: 3、如何进行props的类型检测 4、三...

  • prop-types

    在 React 中我们使用 prop-types 对组件的 prop 进行类型检测。 propTypes 能用来检...

网友评论

      本文标题:react中props类型检测

      本文链接:https://www.haomeiwen.com/subject/hzjugqtx.html