文件显示here
array和 object 可以分别替换为arrayOf和 shape 。
所以,我在我的项目中做到了:
class X extends React.Component {
....
}
X.propTypes = {
somePorp: PropTypes.shape.isRequired, // this cause an warnning in firefox, but satisfied eslint syntax check
somePorp: PropTypes.object.isRequired, // no warnning in firefox, but can not satisfy eslint syntax check
}
问题:
如何避免在firefox中发出警告消息以及通过eslint语法检查(最好不要修改eslint默认规则)?
BTW:firefox警告如下所示
警告:道具类型失败:X:道具类型
classes
无效;它必须是一个函数,通常来自prop-types
包,但已收到undefined
。
答案 0 :(得分:1)
您需要定义道具的形状。如果不确定,只需console.log()
道具并查看其组成即可。 Click here to view the available PropType declarations。
例如,如果要利用redux
的{{1}}商店或this.props.store
的{{1}}来利用history
:
react-router-dom
使用this.props.history
时要小心,因为有时函数/数组/对象/值/等可能存在或可能不存在。对于上面的示例,所有这些组件都应该在组件安装时出现。
答案 1 :(得分:0)
您还可以使用以下方式:
X.propTypes = {
somePorp: PropTypes.objectOf(PropTypes.object()),
}