首页 > 解决方案 > React propTypes 将 isRquired 添加到指定形状的对象

问题描述

我有一个data对象,我正在验证它的道具类型,如下所示:

UserCard.propTypes = {
  data: PropTypes.shape({
    name: PropTypes.string.isRequired,
    email: PropTypes.string.isRequired,
    phone: PropTypes.string.isRequired,
    company: PropTypes.shape({
      name: PropTypes.string.isRequired,
    }),
    website: PropTypes.string.isRequired,
    address: PropTypes.shape({
      street: PropTypes.string.isRequired,
      suite: PropTypes.string.isRequired,
      city: PropTypes.string.isRequired,
      zipcode: PropTypes.string.isRequired,
    }),
  }),
};

我正在使用抛出此错误的 eslint:

propType "data" is not required, but has no corresponding defaultProps declaration

我可以为对象添加 defaultProps,data但有什么方法可以将 isRequired 添加到数据对象并避免完全需要默认道具?

标签: reactjsreact-proptypes

解决方案


我刚刚浏览了一篇关于 react prop types 的博客文章,在其评论的下方,我找到了答案。所需要做的就是isRequired在 shape 方法之后添加,如下所示:

UserCard.propTypes = {
  data: PropTypes.shape({
    name: PropTypes.string.isRequired,
    email: PropTypes.string.isRequired,
    phone: PropTypes.string.isRequired,
    company: PropTypes.shape({
      name: PropTypes.string.isRequired,
    }),
    website: PropTypes.string.isRequired,
    address: PropTypes.shape({
      street: PropTypes.string.isRequired,
      suite: PropTypes.string.isRequired,
      city: PropTypes.string.isRequired,
      zipcode: PropTypes.string.isRequired,
    }),
  }).isRequired,
};

推荐阅读