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
}`