2017-08-18 16 views
5

Sự khác nhau giữa PropTypes.objectOfPropTypes.shape là gì? Trong docs:React propTypes: objectOf vs hình dạng?

// 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 
    }) 

Khi nào tôi nên sử dụng objectOf và khi nào tôi nên sử dụng shape?

Trả lời

5

PropTypes.objectOf được sử dụng khi mô tả đối tượng có thuộc tính giống nhau.

PropTypes.shape được sử dụng khi mô tả đối tượng có khóa được biết trước và có thể đại diện cho các loại khác nhau.

+0

hmm ... ok tôi hiểu rồi. Tôi nghĩ sự nhầm lẫn của tôi là thiếu trí tưởng tượng. Bạn có thể đưa ra ví dụ về trường hợp sử dụng thực tế tốt cho 'PropTypes.objectOf' không? –

+0

Trường hợp sử dụng sẽ là một đối tượng mà bạn không biết tên của các khóa trước. Miễn là bạn biết loại giá trị sẽ là gì, bạn có thể sử dụng 'PropTypes.objectOf' để xác thực. – djfdev

+0

Vâng, 'objectOf' là dành cho một đối tượng từ điển có cùng loại cho tất cả các giá trị. – Tr1et

5

Chỉ muốn cung cấp một ví dụ cho các đối tượng sau đây:

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

ObjectOf và Shape

Được sử dụng khi một đối tượng có thể có tên thuộc tính khác nhau, nhưng một tập quán của các thuộc tính cho mỗi người :

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

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

Như bạn thấy, animals là một đối tượng bao gồm nhiều bộ chống đỡ erties rằng mỗi loại tuân theo loại animalItemShape.

Hy vọng điều đó sẽ hữu ích!

Các vấn đề liên quan