说我已经定义了这个PropType:
Component.propTypes = {
complicatedData: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string,
data: PropTypes.arrayOf(PropTypes.number)
})
).isRequired,
};
如果需要该数据结构,那么嵌套结构的每个级别所需的isRequired
是否必需,或者最后的顶级isRequired
是否包含内部的所有内容?
答案 0 :(得分:1)
顶级isRequired
仅检查是否提供了complicatedData
且是否为数组。你可以给它一个包含空对象的数组,例如[{}, {}]
,它会根据你的代码传递测试。
如果您希望数组complicatedData
中的每个元素都具有name
属性,那么您需要编写:
Component.propTypes = {
complicatedData: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string.isRequired,
data: PropTypes.arrayOf(PropTypes.number)
})
).isRequired,
};
如果您希望每个元素都具有data
属性,则相同。