reactjs-React propTypes:objectOf与形状?

objectOfshape有什么区别? 在文档中:

// An object with property values of a certain type
optionalObjectOf: PropTypes.objectOf(PropTypes.number)

VS

// An object taking on a particular shape
optionalObjectWithShape: PropTypes.shape({
  color: PropTypes.string,
  fontSize: PropTypes.number
})

什么时候应该使用objectOf,什么时候应该使用shape

DMac the Destroyer asked 2019-11-15T16:11:17Z
2个解决方案
101 votes

描述属性均为相同类型的对象时,使用PropTypes.shape

const objectOfProp = {
  latitude: 37.331706,
  longitude: -122.030783
}

// PropTypes.objectOf(PropTypes.number)

PropTypes.shape用于描述其键提前已知且可以表示不同类型的对象。

const shapeProp = {
  name: 'Jane',
  age: 25
}

// PropTypes.shape({ name: PropTypes.string, age: PropTypes.number })
djfdev answered 2019-11-15T16:11:49Z
35 votes

只是想提供一个给出以下对象的示例:

{
    petStore: {
        animals: {
           '23': { name: 'Snuffles', type: 'dog', age 13 }
           '29': { name: 'Mittens', type: 'cat', age: 7 }
        }
    }
}

对象的形状

当一个对象可以具有不同的属性名称,但是每个属性具有一致的属性集时使用:

const animalItemShape = {
    name: PropTypes.string,
    type: PropTypes.string,
    age: PropTypes.number
}

const petStoreShape = {
    animals: PropTypes.objectOf(PropTypes.shape(animalItemShape))
}

如您所见,animals是一个由多个属性组成的对象,每个属性均符合animalItemShape类型。

希望能帮助到你!

Levi Fuller answered 2019-11-15T16:12:49Z
translate from https://stackoverflow.com:/questions/45764746/react-proptypes-objectof-vs-shape