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