Javascript ReactJS";TypeError:无法读取属性';数组';“未定义”的定义;

Javascript ReactJS";TypeError:无法读取属性';数组';“未定义”的定义;,javascript,reactjs,Javascript,Reactjs,运行此代码时,我在App.propTypes TypeError:无法读取未定义的属性“array” 代码: 类应用程序扩展了React.Component{ render(){ 返回( 数组:{this.props.propArray} 数组:{this.props.propBool?“true”:“false”} Func:{this.props.propFunc(3)} 编号:{this.props.propNumber} 字符串:{this.props.propString} 对象:{t

运行此代码时,我在
App.propTypes

TypeError:无法读取未定义的属性“array”

代码:

类应用程序扩展了React.Component{
render(){
返回(
数组:{this.props.propArray}
数组:{this.props.propBool?“true”:“false”}
Func:{this.props.propFunc(3)}
编号:{this.props.propNumber}
字符串:{this.props.propString}
对象:{this.props.propObject.objectName1}
对象:{this.props.propObject.objectName2}
对象:{this.props.propObject.objectName3}
);
}
}
App.propTypes={
propArray:React.PropTypes.array.isRequired,//我在这里遇到了错误
propBool:React.PropTypes.bool.isRequired,
propFunc:React.PropTypes.func,
propNumber:React.PropTypes.number,
propString:React.PropTypes.string,
propObject:React.PropTypes.object
}
App.defaultProps={
propArray:[1,2,3,4,5],
普罗布尔:是的,
propFunc:函数(e){return e},
编号:1,
propString:“字符串值…”,
propObject:{
objectName1:“objectValue1”,
objectName2:“objectValue2”,
objectName3:“objectValue3”
}
}

我试图搜索,但没有得到正确的解决方案。

React包不再包含PropTypes。您需要安装
道具类型
软件包和

import PropTypes from 'prop-types';
编辑:如本手册第一段所述

自React v15.5以来,React.PropTypes已移动到另一个包中。请改用道具类型库


道具类型现在是一个单独维护的库,名为
道具类型
以下是react docs的解释:

您必须将它们作为

import React from 'react';
import PropTypes from 'prop-types'

class App extends React.Component {
  //App here
}

App.propTypes = {
 propArray: PropTypes.array.isRequired, 
 propBool: PropTypes.bool.isRequired,
 propFunc: PropTypes.func,
 propNumber: PropTypes.number,
 propString: PropTypes.string,
 propObject: PropTypes.object
}
更改此选项:

App.propTypes = {
   propArray: React.PropTypes.array.isRequired, //I got error over here
   propBool: React.PropTypes.bool.isRequired,
   propFunc: React.PropTypes.func,
   propNumber: React.PropTypes.number,
   propString: React.PropTypes.string,
   propObject: React.PropTypes.object
}
致:


您应该将React.PropTypes.array.*更改为PropTypes.array.*

App.propTypes={
propArray:PropTypes.array.isRequired,
propBool:PropTypes.bool.isRequired,
propFunc:PropTypes.func,
propNumber:PropTypes.number,
propString:PropTypes.string,
propObject:PropTypes.object,
headerProp:PropTypes.string,
contentProp:PropTypes.string
}
App.defaultProps={
headerProp:“来自道具的头…”,
contentProp:“来自道具的内容…”,
propArray:[1,2,3,4,5],
普罗布尔:是的,
propFunc:函数(e){return e},
编号:1,
propString:“字符串值…”,
propObject:{
objectName1:“objectValue1”,
objectName2:“objectValue2”,
objectName3:“objectValue3”
}

}
您使用的是哪一版本的React?我猜您在React 16上的PropTypes已被移动到另一个名为prop types的包中。-@BoyWithSilverWings React版本:16.0.0然后,答案有你的解决方案i也
从“道具类型”导入道具类型但不起作用是的,添加
从“prop-types”导入PropTypes后出现相同错误
@WilliamKF从
App.propTypes
中删除React。您的代码变成“propArray:PropTypes.array.isRequired”,并对每个位置进行相同的更改
App.propTypes = {
   propArray: React.PropTypes.array.isRequired, //I got error over here
   propBool: React.PropTypes.bool.isRequired,
   propFunc: React.PropTypes.func,
   propNumber: React.PropTypes.number,
   propString: React.PropTypes.string,
   propObject: React.PropTypes.object
}
App.propTypes = {
  propArray: PropTypes.array.isRequired,
  propBool: PropTypes.bool.isRequired,
  propFunc: PropTypes.func,
  propNumber: PropTypes.number,
  propString: PropTypes.string,
  propObject: PropTypes.object
}`