Open iam4x opened 8 years ago
function foobar(DecoratedComponent) { return class Parent extends Component { state = { isActive: true } render() { const { isActive } = this.state; return <DecoratedComponent isActive={ isActive } />; } } } @foobar() class Child { props: { isActive: boolean; }; render() { .... } }
In this case, propTypes will be applied to Wrapper instead of Parent it will log in dev-console:
propTypes
Wrapper
Parent
Warning: Failed propType: Invalid prop `isActive` supplied to `Parent`. Expected: bool Got: void
My .babelrc for help:
{ "presets": ["save"], "plugins": [], "env": { "browser": { "plugins": [ "typecheck", ["react-transform", { "transforms": [ { "transform": "react-transform-hmr", "imports": [ "react" ], "locals": [ "module" ] }, { "transform": "react-transform-catch-errors", "imports": [ "react", "redbox-react" ] } ] }] ] }, "production": { "plugins": ["react-remove-prop-types"] } } }
My workaround for now, which is painful is to call the decorator as a function in the export.
Yes, the propTypes are assigned to the wrong class in this case. I have a fix ready, but it still needs to be tested.
In this case,
propTypes
will be applied toWrapper
instead ofParent
it will log in dev-console:My .babelrc for help:
My workaround for now, which is painful is to call the decorator as a function in the export.