【问题标题】:React ProptTypes - object of objectsReact Proptypes - 对象的对象
【发布时间】:2017-07-06 15:06:03
【问题描述】:

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

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 验证菜单道具?

【问题讨论】:

    标签: reactjs react-proptypes


    【解决方案1】:

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

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

    【讨论】:

    • 如果我传递了一个平面对象PropTypes.objectOf({ name: PropTypes.string.isRequired, url: PropTypes.string.isRequired, }),这会引发错误并告诉objectOf 中的符号无效。如何正确传递嵌套在对象中的对象?
    • @AlexNikonov 您需要使用PropTypes.shape() 而不是普通对象
    猜你喜欢
    • 1970-01-01
    • 2018-03-29
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2021-10-17
    • 2019-07-14
    相关资源
    最近更新 更多