首页 > 解决方案 > 如果提供了道具,则需要 PropTypes 形状

问题描述

我正在尝试使用 PropTypes 进行复杂的验证,但我运气不好。

当前的道具类型:

Map.propTypes = {
  locations: PropTypes.arrayOf(
    PropTypes.shape({
      latitude: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
        .isRequired,
      longitude: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
        .isRequired
    })
  )
}

发生了什么:

如果没有locations提供任何道具,纬度和经度仍然按要求标记。我想这是可以预料的。

我想要什么:

如果仅在提供位置道具时才需要纬度和经度,我希望它。

我已经尝试为位置道具做一个自定义函数,但由于它有复杂的验证(arrayOfshapeoneOfType我不想自己重新实现这些方法。

标签: reactjsreact-proptypes

解决方案


推荐阅读