Reactjs 反应警告:失败的道具类型:提供的“Object”类型的道具无效

Reactjs 反应警告:失败的道具类型:提供的“Object”类型的道具无效,reactjs,eslint,react-props,react-proptypes,eslint-config-airbnb,Reactjs,Eslint,React Props,React Proptypes,Eslint Config Airbnb,我收到警告“警告:失败的道具类型:提供给的类型为对象的无效道具,应为绑定检查类型的实例” 这是我的道具类型: FieldTable.propTypes = { rawData: PropTypes.instanceOf(PropTypes.object).isRequired, percentCols: PropTypes.arrayOf(PropTypes.string).isRequired, specialColNames: PropTypes.instanceOf

我收到警告“警告:失败的道具类型:提供给的类型为
对象的无效道具,应为
绑定检查类型的实例”

这是我的道具类型:

FieldTable.propTypes = {
    rawData: PropTypes.instanceOf(PropTypes.object).isRequired,
    percentCols: PropTypes.arrayOf(PropTypes.string).isRequired,
    specialColNames: PropTypes.instanceOf(PropTypes.object).isRequired,
    scenarioHeaders: PropTypes.instanceOf(PropTypes.object),
    headerHierarchies: PropTypes.arrayOf(PropTypes.object).isRequired
};
它所指的“绑定检查类型”是什么?我应该如何验证我的对象道具以避免此警告?对象本身是从异步调用接收并在其他组件中生成的JSON对象。例如,rawData对象来自一个组件,该组件允许用户上载excel电子表格,然后将电子表格解析为JSON对象。不知道这是不是有用的信息


感谢您的帮助,特别是这个问题可能引起的任何更深入的讨论。

要检查纯JS对象的类型,您只需使用:

plainObj: PropTypes.object.isRequired,

对于启用了eslint的
反应/禁止道具类型时的对象,请尝试使用形状:

plainObj: PropTypes.shape({ subProp: PropTypes.string })

不幸的是,这不会通过我公司的反应/禁止道具类型的eslint规则,因此这对我的情况不是一个好的解决方案。我应该补充一点,我在字符串eslint规则下,所以我不能使用简单的
PropTypes.object.isRequired
,因为这将触发反应/禁止道具类型规则。这修复了它!谢谢你的建议!