Quelle est la différence entre PropTypes.objectOf
et PropTypes.shape
? Dans le docs :
// An object with property values of a certain type
optionalObjectOf: PropTypes.objectOf(PropTypes.number)
contre
// An object taking on a particular shape
optionalObjectWithShape: PropTypes.shape({
color: PropTypes.string,
fontSize: PropTypes.number
})
Quand dois-je utiliser objectOf
et quand dois-je utiliser shape
?
PropTypes.objectOf
est utilisé pour décrire un objet dont les propriétés sont du même type.
const objectOfProp = {
latitude: 37.331706,
longitude: -122.030783
}
// PropTypes.objectOf(PropTypes.number)
PropTypes.shape
est utilisé pour décrire un objet dont les clés sont connues à l'avance et peut représenter différents types.
const shapeProp = {
name: 'Jane',
age: 25
}
// PropTypes.shape({ name: PropTypes.string, age: PropTypes.number })
Je voulais juste donner un exemple à partir de l'objet suivant:
{
petStore: {
animals: {
'23': { name: 'Snuffles', type: 'dog', age 13 }
'29': { name: 'Mittens', type: 'cat', age: 7 }
}
}
}
ObjectOf et Shape
Utilisé lorsqu'un objet peut avoir des noms de propriété différents, mais un ensemble cohérent de propriétés pour chacune d'elles:
const animalItemShape = {
name: PropTypes.string,
type: PropTypes.string,
age: PropTypes.number
}
const petStoreShape = {
animals: PropTypes.objectOf(PropTypes.shape(animalItemShape))
}
Comme vous pouvez le constater, animals
est un objet composé de plusieurs propriétés conformes au type animalItemShape
.
J'espère que ça aide!