react的类型检查PropTypes自React v15.5起已弃用,请使用prop-types

最近使用React的类型检查PropTypes时,遇到错误:TypeError: Cannot read property ‘array‘ of undefined

看了下自己的React版本:    "react": "^16.2.0",
google搜了下,原来:react的类型检查PropTypes自React v15.5起已弃用,请使用prop-types
使用方法参考:

https://doc.react-china.org/docs/typechecking-with-proptypes.html

import PropTypes from ‘prop-types‘;

MyComponent.propTypes = {
  // 你可以将属性声明为以下 JS 原生类型
  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.‘
      );
    }
  })
};

原文地址:https://www.cnblogs.com/shengulong/p/8463757.html

时间: 2024-08-28 23:12:33

react的类型检查PropTypes自React v15.5起已弃用,请使用prop-types的相关文章

React的类型检测PropTypes

React.propTypes:React.PropTypes 提供很多验证器来验证传入数据的有效性,当向props传入无效数据时,JavaScript 控制台会抛出警告. var data = 123; class MyTitle extends React.Component { static propTypes = { title: PropTypes.string.isRequired, } render() { return <h1> {this.props.title} </

React 使用 PropTypes 进行类型检查

注意: React.PropTypes 自 React v15.5 起已弃用.请使用 prop-types 库代替. defaultProps 用来确保 this.props.name 在父组件没有特别指定的情况下,有一个初始值.类型检查发生在 defaultProps 赋值之后,所以类型检查也会应用在 defaultProps 上面. 出处:https://react.bootcss.com/react/docs/typechecking-with-proptypes.html 原文地址:ht

React类型检查

类型检查 import PropTypes from 'prop-types' 类名==List List.propTypes = { list: PropTypes.array } // 默认值 List.defaultProps = { list:[] } props: 1.只读不能修改(不能再赋值表达式左边) 2.ComponentWillReceiveProp() 3.propTypes 4. defaultProps 5.children web > native native 需要下

React组件属性类型(propTypes)

React.createClass({ propTypes: { // You can declare that a prop is a specific JS primitive. By default, these // are all optional. optionalArray: React.PropTypes.array, optionalBool: React.PropTypes.bool, optionalFunc: React.PropTypes.func, optionalN

使用 PropTypes 进行类型检查

注意: 从 React v15.5 开始 ,React.PropTypes 助手函数已被弃用,建议使用 prop-types 库 来定义contextTypes. 1 2 3 4 5 6 7 8 9 10 11 12 13 import PropTypes from 'prop-types'; class Greeting extends React.Component {   render() {     return (       <h1>Hello, {this.props.name}

Springboot + mybatis + React+redux+React-router+antd+Typescript(二): React+Typescrip项目的搭建

前言: 后台搭建完以后开始搭建前端,使用create-react-app搭建项目非常方便. 前端主要是如何向后台请求数据,以及如何使用redux管理state,路由的配置. 前端github地址: https://github.com/www2388258980/rty-web 后台github地址: https://github.com/www2388258980/rty-service 项目访问地址:          http://106.13.61.216:5000/          

[React Native] Animate Styles of a React Native View with Animated.timing

In this lesson we will use Animated.timing to animate the opacity and height of a View in our React Native application. This function has attributes that you can set such as easing and duration. import React, {Component} from 'react'; import {Text, V

react.js 从零开始(七)React (虚拟)DOM

React 元素 React 中最主要的类型就是 ReactElement.它有四个属性:type,props,key 和ref.它没有方法,并且原型上什么都没有. 可以通过 React.createElement 创建该类型的一个实例. var root = React.createElement('div'); 为了渲染一个新的树形结构到 DOM 中,你创建若干个 ReactElement,然后传给React.render 作为第一个参数,同时将第二个参数设为一个正规的 DOM 元素(HTM

React系列(一):React入门

React简介 1.由来 React是有Facebook开发出来用于构建前端界面的JS组件库,由于其背后的强大背景,使得这款库在技术开发上完全没有问题. 2.React的优势 解决大规模项目开发中数据不断变化变得难以操作的问题: 组件化开发,使得开发更加快速: 单向数据流,有利于找到问题: 虚拟DOM,在React内部有一套diff算法可以快速的计算出整体需要改动的位置,从而做到快速局部刷新:举个栗子:删除一个列表再插入个新表,计算后会比较出不同然后插进去: JSX的编译方式,将HTML代码和J