-
-
Save revskill10/37d1464b8da6ef4d60710f528bedc5c1 to your computer and use it in GitHub Desktop.
React components are so fucking stupid, it's unbelievable. 3 months with this library version 15 and the glaring stupidity of the API just keeps coming in waves. Fixing some of this stuff – just for the sake of internal consistency – would have been so simple. The number of hoops you're required to jump through for trivial shit. Ugh.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const mounted = new WeakSet() | |
export default const unfucker = (component, displayName = component.displayName || component.name || 'React.Component') => { | |
const host = { | |
[displayName] : class extends React.Component { | |
constructor(){ | |
this.state = {} | |
component.apply(this, arguments) | |
} | |
setState(partial, callback){ | |
this.state = Object.assign({}, this.state, typeof partial === 'function' ? partial(this.state, this.props) : partial) | |
callback() | |
} | |
componentDidMount(){ | |
this.setState = React.Component.prototype.setState | |
if(component.prototype.componentDidMount) | |
return component.prototype.componentDidMount.apply(this, arguments) | |
} | |
render(){ | |
if(!component.prototype.render) | |
return this.props.children || [] | |
const output = component.prototype.render.apply(this, arguments) | |
if(this.props.key && output.key === null) | |
output.key = key | |
} | |
} | |
} | |
return host[displayName]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment