React propTypes:objectOf vs 形状?
React propTypes: objectOf vs shape?
PropTypes.objectOf
和 PropTypes.shape
有什么区别?在 PropTypes:
// An object with property values of a certain type
optionalObjectOf: PropTypes.objectOf(PropTypes.number)
对
// An object taking on a particular shape
optionalObjectWithShape: PropTypes.shape({
color: PropTypes.string,
fontSize: PropTypes.number
})
什么时候应该使用objectOf
,什么时候应该使用shape
?
PropTypes.objectOf
用于描述一个属性都是同一类型的对象。
const objectOfProp = {
latitude: 37.331706,
longitude: -122.030783
}
// PropTypes.objectOf(PropTypes.number)
PropTypes.shape
用于描述一个key是提前知道的对象,可以代表不同的类型。
const shapeProp = {
name: 'Jane',
age: 25
}
// PropTypes.shape({ name: PropTypes.string, age: PropTypes.number })
只是想提供一个给定以下对象的示例:
{
petStore: {
animals: {
'23': { name: 'Snuffles', type: 'dog', age 13 }
'29': { name: 'Mittens', type: 'cat', age: 7 }
}
}
}
ObjectOf 和 Shape
当一个对象可以有不同的 属性 名称,但每个名称都有一组一致的属性时使用:
const animalItemShape = {
name: PropTypes.string,
type: PropTypes.string,
age: PropTypes.number
}
const petStoreShape = {
animals: PropTypes.objectOf(PropTypes.shape(animalItemShape))
}
如您所见,animals
是由多个属性组成的对象,每个属性都符合animalItemShape
类型。
希望对您有所帮助!
PropTypes.objectOf
和 PropTypes.shape
有什么区别?在 PropTypes:
// An object with property values of a certain type
optionalObjectOf: PropTypes.objectOf(PropTypes.number)
对
// An object taking on a particular shape
optionalObjectWithShape: PropTypes.shape({
color: PropTypes.string,
fontSize: PropTypes.number
})
什么时候应该使用objectOf
,什么时候应该使用shape
?
PropTypes.objectOf
用于描述一个属性都是同一类型的对象。
const objectOfProp = {
latitude: 37.331706,
longitude: -122.030783
}
// PropTypes.objectOf(PropTypes.number)
PropTypes.shape
用于描述一个key是提前知道的对象,可以代表不同的类型。
const shapeProp = {
name: 'Jane',
age: 25
}
// PropTypes.shape({ name: PropTypes.string, age: PropTypes.number })
只是想提供一个给定以下对象的示例:
{
petStore: {
animals: {
'23': { name: 'Snuffles', type: 'dog', age 13 }
'29': { name: 'Mittens', type: 'cat', age: 7 }
}
}
}
ObjectOf 和 Shape
当一个对象可以有不同的 属性 名称,但每个名称都有一组一致的属性时使用:
const animalItemShape = {
name: PropTypes.string,
type: PropTypes.string,
age: PropTypes.number
}
const petStoreShape = {
animals: PropTypes.objectOf(PropTypes.shape(animalItemShape))
}
如您所见,animals
是由多个属性组成的对象,每个属性都符合animalItemShape
类型。
希望对您有所帮助!