React 的无效 prop 类型“array”应为“object”
2017-04-29
9208
我在详细信息页面中显示公司信息(来自公司列表,通过 React Link 在参数中发送 ID)
现在我们讨论详细信息页面。我收到 ID,调用 json 数组的 api:
{"_id":"58f7f61cff8d4014d7f7730b","company_name":"Vodafone" .... }
并期望它为:
export default class Detail extends Component {
static propTypes = {
getCompany: PropTypes.func.isRequired,
**company**: PropTypes.array,
}
一切正常,已接收并显示,但我仍然收到警告:
"Warning: Failed prop type: Invalid prop `company` of type `object` supplied to `Detail`, expected `array`."
我对 React 还很陌生,所以我想也许我的 API 没有返回数组,但是当我将 company 的 prop 定义切换为“object”时,我收到了相同的警告,但问题相反 - 接收数组,期望对象,所以这是一个我找不到出路的循环。
以前有人见过类似的东西吗?是 company prop 还是 API 的问题?
非常感谢
1个回答
错误消息非常容易理解:您传递的值是包含公司数据的单个对象。因此,正确的 prop 类型应为
PropTypes.object
,如下所示:
export default class Detail extends Component {
static propTypes = {
getCompany: PropTypes.func.isRequired,
company: PropTypes.object
}
}
如果您的数据有时是数组,有时是对象,则可以使用以下方法:
export default class Detail extends Component {
static propTypes = {
getCompany: PropTypes.func.isRequired,
company: PropTypes.oneOf([PropTypes.object, PropTypes.array])
}
}
但这有点违背了整个 prop 类型的目的,因此您或许应该确保始终将数组 或 对象传递给组件。
Patrick Hund
2017-04-29