1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00
next.js/lib/router/with-router.js
Arunoda Susiripala 56662b4d84 Add/with router (#2870)
* 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.
2017-08-30 19:37:12 +05:30

28 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)
}