嵌套的 PropType 是否需要 isRequired?
Is isRequired necessary for nested PropTypes?
假设我定义了这个 PropType:
Component.propTypes = {
complicatedData: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string,
data: PropTypes.arrayOf(PropTypes.number)
})
).isRequired,
};
如果该数据结构是必需的,那么 isRequired
属性是否对于该嵌套结构的每一层都是必需的,或者末尾的顶级 isRequired
是否包含内部的所有内容?
顶层isRequired
只检查是否提供了complicatedData
并且是一个数组。您可以给它一个包含空对象的数组,例如 [{}, {}]
,它会根据您的代码通过测试。
如果你想让数组complicatedData
中的每个元素都有一个name
属性,那么你需要这样写:
Component.propTypes = {
complicatedData: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string.isRequired,
data: PropTypes.arrayOf(PropTypes.number)
})
).isRequired,
};
如果您希望每个元素都有一个 data
属性.
,则相同
假设我定义了这个 PropType:
Component.propTypes = {
complicatedData: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string,
data: PropTypes.arrayOf(PropTypes.number)
})
).isRequired,
};
如果该数据结构是必需的,那么 isRequired
属性是否对于该嵌套结构的每一层都是必需的,或者末尾的顶级 isRequired
是否包含内部的所有内容?
顶层isRequired
只检查是否提供了complicatedData
并且是一个数组。您可以给它一个包含空对象的数组,例如 [{}, {}]
,它会根据您的代码通过测试。
如果你想让数组complicatedData
中的每个元素都有一个name
属性,那么你需要这样写:
Component.propTypes = {
complicatedData: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string.isRequired,
data: PropTypes.arrayOf(PropTypes.number)
})
).isRequired,
};
如果您希望每个元素都有一个 data
属性.