在运行此代码时,我在App.propTypes
TypeError:无法读取属性'数组'未定义的
代码:
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"
}
}
我试图搜索,但我没有得到正确的解决方案。
答案 0 :(得分:24)
Prop-Types现在是一个名为prop-types
的单独维护的库
以下是来自react-docs的解释:https://reactjs.org/docs/typechecking-with-proptypes.html
您必须将其导入为
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
}
答案 1 :(得分:1)
更改此:
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
}`
答案 2 :(得分:0)
React包不再包含PropTypes。您需要安装prop-types
包和
import PropTypes from 'prop-types';
编辑:如documentation
中的第一段所述自React v15.5起,React.PropTypes已移至另一个包中。请改用prop-types库。
答案 3 :(得分:0)
您应将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"
}
}