React ProptTypes - 对象的对象

时间:2017-07-06 15:06:03

标签: reactjs react-proptypes

我有一个对象,它有动态键(但值是具有相同键的对象):

menu = {
    dogs: {
        name: 'some name1',
        url: 'google.com'
    },
    cats: {
        name: 'some name2',
        url: 'facebook.com'
    },
    parrots: {
        name: 'some name3',
        url: 'linkedin.com'
    }
}

假设我有一个组件:

const Menu = ({menu}) => (
    <div>        
        {
            Object.keys(menu).map(key => (
                <div>{menu.name}</div>
            ))
        }
    </div>
);

如何使用PropTypes验证菜单道具?

1 个答案:

答案 0 :(得分:5)

您可以使用PropTypes.objectOf()执行以下操作:

propTypes: {
  menu: PropTypes.objectOf(
    PropTypes.shape({
      name: PropTypes.string.isRequired,
      url: PropTypes.string.isRequired,
    })
  ).isRequired
}