Skip to content

Instantly share code, notes, and snippets.

@marg51
Last active January 22, 2017 17:39
Show Gist options
  • Save marg51/6613e68d7d52903a7ef0baad1e7de38a to your computer and use it in GitHub Desktop.
Save marg51/6613e68d7d52903a7ef0baad1e7de38a to your computer and use it in GitHub Desktop.
function compose(composeFn, param) {
if(typeof composeFn != "function")
return {}
return composeFn(param)
}
function connectProps(store, mapStateToProps, mapDispatchToProps) {
return {
...compose(mapStateToProps, store.getState()),
...compose(mapDispatchToProps, store.dispatch)
}
}
export function connect(mapStateToProps, mapDispatchToProps) {
return (Target) => {
class Connected extends Component {
componentWillMount() {
this.componentWillUpdate()
}
componentWillUpdate() {
this.connectedProps = connectProps(
this.context.store,
mapStateToProps,
mapDispatchToProps
)
}
render() {
return (<Target {...this.props} {...this.connectedProps}/>)
}
}
return Connected
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment