我有这些PropTypes
设置:
Select.propTypes = {
onSelect: PropTypes.func.isRequired,
data: PropTypes.arrayOf(PropTypes.shape({
key: PropTypes.string.isRequired,
value: PropTypes.string.isRequired
}).isRequired).isRequired
}
如果未定义, onSelect
和data
都会显示错误。但是,数组中对象的形状不是验证。我可以使用data={[]}
并且它没有错误。
我有什么东西在这里失踪吗?谢谢
答案 0 :(得分:1)
我认为这是预期的。当prop是必需的数组时,您可以传递空数组或具有给定类型元素的数组。不仅对于形状,即使对于PropTypes.arrayOf(PropTypes.number).isRequired
,它也会将[]
和[9]
视为有效,而不是["9"]
。它没有'即使您使用PropTypes.arrayOf(PropTypes.number.isRequired).isRequired
也要进行更改。
基本上,您不能指定应该在数组中的最小元素数量,或者限制使用prop类型指定空数组。