React ProptTypes - 对象的对象

kur*_*kan 6 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'
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我有一个组件:

const Menu = ({menu}) => (
    <div>        
        {
            Object.keys(menu).map(key => (
                <div>{menu.name}</div>
            ))
        }
    </div>
);
Run Code Online (Sandbox Code Playgroud)

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

Oka*_*ari 11

你可以使用以下方法做到PropTypes.objectOf():

propTypes: {
  menu: PropTypes.objectOf(
    PropTypes.shape({
      name: PropTypes.string.isRequired,
      url: PropTypes.string.isRequired,
    })
  ).isRequired
}
Run Code Online (Sandbox Code Playgroud)