在React中检查道具类型

时间:2016-12-07 20:46:44

标签: javascript reactjs

我正在阅读官方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的类型检查?如果是,我应该如何检查道具类型?

2 个答案:

答案 0 :(得分:5)

你根本不检查道具类型,React会为你做这件事。

但是,正如文档所说,只要您处于开发模式。每个prop类型检查本质上都是一个使用处理能力和内存的函数调用。

当您处于开发过程中时,知道您的某个道具类型错误会使这个成本值得权衡。

一旦投入生产,您的应用应该经过足够的测试,以确保您的道具类型验证无论如何都不会失败。

出于这个原因,他们被跳过以使你的应用程序更有效率。

答案 1 :(得分:2)

propTypes仅用于验证您当前的开发过程。当缺少某些必需属性或属性类型与预期属性不匹配时,您将通过控制台日志收到通知。

无需在生产版本中验证此类验证。缺少属性不会破坏渲染过程,它们只是以意想不到的方式渲染组件。但请注意,当您需要访问“给定”对象的属性时,渲染过程将失败。

要控制此意外行为,您应声明默认属性。

但是,强烈建议使用propTypes对象并使用单元测试以避免意外的渲染行为。坚持下去!