美文网首页
@芥末的糖-----PropTypes

@芥末的糖-----PropTypes

作者: 芥末的糖 | 来源:发表于2018-11-20 20:05 被阅读0次

1.导入一个包

import PropTypes from 'prop-types'

2.使用PropTypes用途

PropTypes导出一系列验证工具可以确保你接收到的数据是有效的

2.1私有静态变量,不可修改,简洁的写法

  static propTypes = {
    //父组件传来的key
    value: PropTypes.string.isRequired,
    index: PropTypes.number,
    deleteItem: PropTypes.func
  }

  static defaultProps = {
    value: 'hello'
  }  

2.2从React15.5起,React.PropTypes被移入到单独的package中。react提供了一个package(prop-types)去检查props的类型。首先需要将prop-types引用到文件中。

import PropTypes from 'prop-types'
myComponent.propTypes = {
    // 数组
  optionalArray: PropTypes.array,
  // 布尔值
  optionalBool: PropTypes.bool,
  // 函数
  optionalFunc: PropTypes.func,
  // 数值
  optionalNumber: PropTypes.number,
  // 对象
  optionalObject: PropTypes.object,
  // 字符串
  optionalString: PropTypes.string,
  // symbol
  optionalSymbol: PropTypes.symbol,
  // 能够被渲染的数值,字符串,元素或者包含这些类型的数组
  optionalNode: PropTypes.node,
  // React元素
  optionalElement: PropTypes.element,
  // optionalMessage是Message类的实例
  optionalMessage: PropTypes.instanceOf(Message),
  // optionalEnum为['News', 'Photos']中的其中一个
  optionalEnum: PropTypes.oneOf(['News', 'Photos']),
  //optionalUnion要么为字符串,要么为数值,要么为Message实例
  optionalUnion: PropTypes.oneOfType([
      PropTypes.string,
      PropTypes.number,
      PropTypes.instanceOf(Message)
    ]),
  // optionalArrayOf是数值类型的数组
  optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
  // optionalObjectOf的属性是数值
  optionalObjectOf: PropTypes.objectOf(PropTypes.number),
  // requiredFunc是函数,且必须提供。isRequired可以链接到任何值后面
  requiredFunc: PropTypes.func.isRequired,
  // requiredAny可以是任何类型,且必须提供
  requiredAny: PropTypes.any.isRequired,
  // 自定义验证器。customProp中必须包含matchme
  customProp: function(props, propName, componentName) {
      if (!/matchme/.test(props[propName])) {
        return new Error(
          'Invalid prop `' + propName + '` supplied to' +
          ' `' + componentName + '`. Validation failed.'
        );
      }
  },
  // 自定义数组,对象类型的验证器
  // 验证器会调用数组或者对象中的每一个值
  // customArrayProp中的每一个值都要包含matchme
  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.'
    );
    }
  })
}

相关文章

  • @芥末的糖-----PropTypes

    1.导入一个包 import PropTypes from 'prop-types' 2.使用PropTypes用...

  • @芥末的糖

    1.接下来是一段有故事的代码,如果你能看到最后,那么我相信,这些干货将会让你受益 2.要求变成//循环外:3 ...

  • @芥末的糖-----redux

    以下例子如果看不懂,就直接看总结,然后看最开始的图,然后对应代码目录结构:都在同一个目录下 1.全局注入 2.全局...

  • @芥末的糖-----this.setState

    React通过this.state来访问state,通过this.setState来更新state。当setSta...

  • @芥末的糖-----Vuex知识

    一 1.什么是Vuex? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用...

  • @芥末的糖-----TypeScript学习

    女友御用版TS解析 优势: -增加了代码的可阅读和可维护性 安装: 一.基础类型 布尔值 数字 number 字符...

  • @芥末的糖-----fs模块

    用node实现一个检索一个目录下面所有的文件的方法

  • 单词积累之调料(1)

    ①盐:salt ②醋:vinegar ③糖:sugar ④酱油:sauce ⑤芥末:mustard ⑥葱:shal...

  • 北海道 六花亭六色酒心糖 名古屋芥末虾片 又是仙贝故里的一款明星产品,有芥末味,但是不会太刺激,鲜虾味和淡淡芥末味...

  • @芥末的糖-----组件的定义

    1.无状态组件,函数式组件, 影子组件,傻瓜组件,UI组件 2.类的定义 总结:类的组件形式相对于函数化组件更消耗性能

网友评论

      本文标题:@芥末的糖-----PropTypes

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