当在一个组件中定义PropTypes时,会有一些期望这些将在收到它们时检查它们的类型。但很明显,组件在填充预期值之前可以接收prop值,因此,PropType警告会显示为结果。那么在组件生命周期的哪个阶段运行类型检查?
这是验证中捆绑的工厂:
https://github.com/facebook/react/blob/master/packages/react/src/ReactElementValidator.js
在开发模式下,它在这里使用:
因此,当传递道具时,它看起来像是在创建/克隆阶段,例如,创建元素工厂的底部调用它:https://github.com/facebook/react/blob/master/packages/react/src/ReactElementValidator.js#L262-L333
如果您将有效道具延迟更改为无效道具,则必须克隆或重新创建该元素(如果它触发警告)但我没有时间确认这一点,您可以轻松地创建一个带有记录器的基本类生命周期方法验证。
你可以在react repo root中搜索checkPropTypes
并在内部找到所有用途。