我有一个接收badge
道具的组件(参见下面的示例)。徽章是可选的,但一旦使用,我希望它内部有一些必填字段。我尝试过以下方法:
Component.propTypes = {
badge: PropTypes.shape({
src: PropTypes.string.isRequired,
alt: PropTypes.string.isRequired,
}),
}
虽然有效,但我在Chrome上尝试使用没有徽章时会收到此警告:
警告:道具类型失败:道具
badge.src
被标记为必需 在Component
中,但其值为null
。
这样做的正确方法是什么?
答案 0 :(得分:4)
这是执行此操作的正确方法。我非常感兴趣的是这不会起作用,所以我将它粘贴在CodePen(https://codepen.io/Oblosys/pen/xLvxrd)中,它的工作方式与预期的一样。 (打开控制台,取消注释失败的控制台以查看道具类型错误)
您的代码中必须出现其他问题,并且在某些时候您使用具有h = static_cast< test_classA * >(new test_classB);
的徽章属性对象呈现Handle
。也许在来自api请求的数据到来之前?在Component
及其父级的某些控制台日志记录中,您应该能够找到罪魁祸首。