我正在阅读官方React文档中的React.Component部分。除了关于propTypes
的{{3}}之外,一切都有意义。文档陈述如下:
在生产模式中,跳过propTypes检查以提高效率。
说我有以下代码:
class Sample extends React.Component {
render() {
return (
<div>Hello {this.props.name}</div>
);
}
}
Sample.propTypes = {
name: React.PropTypes.string
};
文档是否暗示在生产中我会跳过针对props
的类型检查?如果是,我应该如何检查道具类型?
答案 0 :(得分:5)
你根本不检查道具类型,React会为你做这件事。
但是,正如文档所说,只要您处于开发模式。每个prop类型检查本质上都是一个使用处理能力和内存的函数调用。
当您处于开发过程中时,知道您的某个道具类型错误会使这个成本值得权衡。
一旦投入生产,您的应用应该经过足够的测试,以确保您的道具类型验证无论如何都不会失败。
出于这个原因,他们被跳过以使你的应用程序更有效率。
答案 1 :(得分:2)
propTypes仅用于验证您当前的开发过程。当缺少某些必需属性或属性类型与预期属性不匹配时,您将通过控制台日志收到通知。
无需在生产版本中验证此类验证。缺少属性不会破坏渲染过程,它们只是以意想不到的方式渲染组件。但请注意,当您需要访问“给定”对象的属性时,渲染过程将失败。
要控制此意外行为,您应声明默认属性。
但是,强烈建议使用propTypes对象并使用单元测试以避免意外的渲染行为。坚持下去!