高阶组件上的 PropType 是否会在生产中删除



我找到了这个例子高阶组件上的道具类型

基本上,他们将 propType 添加到组件中,然后再将其返回到装饰器中。请参阅下面的代码副本。

我知道反应的生产版本剥离了 PropType,但它会从如下所示的内部函数中剥离它吗?

function EnhanceButton(Component) {
    class _EnhancedButton extends React.Component {
        render() {
            return (
                <Component { ...this.props }>{this.props.children}</Component>
            );
        }
    }
    _EnhancedButton.propTypes = Component.propTypes;
    return _EnhancedButton;
}

React 不会删除代码的propTypes,它只是跳过生产中的propTypes验证。

如果要删除生产propTypes相关代码,可以使用 babel-plugin-transform-react-remove-prop-types

此外,您可以使用babel-react-optimize进行进一步优化。

您可以在此处的代码中看到,仅当 __DEV__ 为 true 时才检查道具类型。 propTypes未从生产版本中的代码中删除,则只是跳过检查以获得更好的性能。
在您的情况下,它也将被跳过。

最新更新