56662b4d84
* Add withRoute HOC Rebased (squashed) - removed routerToProps - updated hoist-non-react-statics - improved propTypes * Expose the whole Router instead of the route. * Make the example simple. * Update examples and the readme. * Add a test case.
27 lines
672 B
JavaScript
27 lines
672 B
JavaScript
import React, { Component } from 'react'
|
|
import PropTypes from 'prop-types'
|
|
import hoistStatics from 'hoist-non-react-statics'
|
|
import { getDisplayName } from '../utils'
|
|
|
|
export default function withRoute (ComposedComponent) {
|
|
const displayName = getDisplayName(ComposedComponent)
|
|
|
|
class WithRouteWrapper extends Component {
|
|
static contextTypes = {
|
|
router: PropTypes.object
|
|
}
|
|
|
|
static displayName = `withRoute(${displayName})`
|
|
|
|
render () {
|
|
const props = {
|
|
router: this.context.router,
|
|
...this.props
|
|
}
|
|
|
|
return <ComposedComponent {...props} />
|
|
}
|
|
}
|
|
|
|
return hoistStatics(WithRouteWrapper, ComposedComponent)
|
|
}
|