[英]ReactJS "TypeError: Cannot read property 'array' of undefined"
While running this code I got error on the first line on App.propTypes
运行此代码时,我在App.propTypes
的第一行出现错误
TypeError: Cannot read property 'array' of undefined类型错误:无法读取未定义的属性“数组”
Code:代码:
class App extends React.Component {
render() {
return (
<div>
<h3>Array: {this.props.propArray}</h3>
<h3>Array: {this.props.propBool ? "true" : "false"}</h3>
<h3>Func: {this.props.propFunc(3)}</h3>
<h3>Number: {this.props.propNumber}</h3>
<h3>String: {this.props.propString}</h3>
<h3>Object: {this.props.propObject.objectName1}</h3>
<h3>Object: {this.props.propObject.objectName2}</h3>
<h3>Object: {this.props.propObject.objectName3}</h3>
</div>
);
}
}
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.defaultProps = {
propArray: [1,2,3,4,5],
propBool: true,
propFunc: function(e){return e},
propNumber: 1,
propString: "String value...",
propObject: {
objectName1:"objectValue1",
objectName2: "objectValue2",
objectName3: "objectValue3"
}
}
I tried to search but I didn't get the correct solution.我试图搜索,但没有得到正确的解决方案。
Prop-Types are now a separately maintained library named prop-types
Here is the explanation from react-docs: https://reactjs.org/docs/typechecking-with-proptypes.html Prop-Types现在是一个名为prop-types
的独立维护库以下是react-docs的解释: https : //reactjs.org/docs/typechecking-with-proptypes.html
You have to import them as 你必须将它们导入为
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
}
Change this: 改变这个:
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
}
to: 至:
App.propTypes = {
propArray: PropTypes.array.isRequired,
propBool: PropTypes.bool.isRequired,
propFunc: PropTypes.func,
propNumber: PropTypes.number,
propString: PropTypes.string,
propObject: PropTypes.object
}`
The React package no longer contains PropTypes. React包不再包含PropTypes。 You need to install the prop-types
package and 您需要安装prop-types
包和
import PropTypes from 'prop-types';
Edit: As stated in the first paragraph in the documentation 编辑:如文档第一段所述
React.PropTypes has moved into a different package since React v15.5. 自React v15.5起,React.PropTypes已移至另一个包中。 Please use the prop-types library instead. 请改用prop-types库。
You should change React.PropTypes.array.* to PropTypes.array.*您应该将 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: "Header from props...", contentProp:"Content from props...", propArray: [1,2,3,4,5], propBool: true, propFunc: function(e){return e}, propNumber: 1, propString: "String value...", propObject: { objectName1:"objectValue1", objectName2: "objectValue2", objectName3: "objectValue3" } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.