oliviertassinari / babel-plugin-transform-react-remove-prop-types

Remove unnecessary React propTypes from the production build. :balloon:
MIT License
897 stars 61 forks source link

Issue when used with `createReactClass` #189

Open carystanley opened 4 years ago

carystanley commented 4 years ago

I found that the plugin had issues when used with createReactClass

example:

var SelectBox = createReactClass({

    propTypes: {    
        value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),   
        selectId: PropTypes.string.isRequired,  
        fullwidth: PropTypes.bool.isRequired    
    },
...
});

Seems to somewhat work on createReactClass components as long as the the propTypes declaration is not two deep like a PropTypes.string.isRequired or as long as functions are not used like: PropTypes.oneOfType(), PropTypes.arrayOf(), or PropTypes.shape(). Almost like PropTypes is being replaced with an empty object.

carystanley commented 4 years ago

Workaround for users experience this is to move propTypes declaration outside of createReactClass:

example:

var SelectBox = createReactClass({
...
});

SelectBox.propTypes = { 
    value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),   
    selectId: PropTypes.string.isRequired,  
    fullwidth: PropTypes.bool.isRequired    
};