eslint`forbid-prop-types`规则在firefox控制台窗口中引起警告

时间:2018-11-12 04:05:36

标签: reactjs eslint

文件显示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

2 个答案:

答案 0 :(得分:1)

您需要定义道具的形状。如果不确定,只需console.log()道具并查看其组成即可。 Click here to view the available PropType declarations

例如,如果要利用redux的{​​{1}}商店或this.props.store的{​​{1}}来利用history

enter image description here

react-router-dom

使用this.props.history时要小心,因为有时函数/数组/对象/值/等可能存在或可能不存在。对于上面的示例,所有这些组件都应该在组件安装时出现。

答案 1 :(得分:0)

您还可以使用以下方式:

X.propTypes = {
    somePorp:  PropTypes.objectOf(PropTypes.object()),  
}