React ProptTypes — объект объектов

У меня есть объект с динамическими ключами (но значения - это объекты с одинаковыми ключами):

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?


person kurumkan    schedule 06.07.2017    source источник


Ответы (1)


Вы можете сделать следующее, используя PropTypes.objectOf():

propTypes: {
  menu: PropTypes.objectOf(
    PropTypes.shape({
      name: PropTypes.string.isRequired,
      url: PropTypes.string.isRequired,
    })
  ).isRequired
}
person Okazari    schedule 06.07.2017
comment
если я передаю объект плоскости PropTypes.objectOf({ name: PropTypes.string.isRequired, url: PropTypes.string.isRequired, }), это выдает ошибку и сообщает недопустимое обозначение внутри objectOf. Как правильно передать объект, вложенный в объект? - person Alexey Nikonov; 15.02.2019
comment
@AlexNikonov Вам нужно использовать PropTypes.shape() вместо простого объекта - person Okazari; 26.02.2019