rsnext/packages/next/client/with-router.js
Alexander Nanberg 25fb3f9c2e Migrate next/router to use React.createContext (#6030)
Fixes parts of #5716. I had some issues with the test suite but I'm fairly certain that I got it working correctly.
2019-01-11 16:04:56 +01:00

25 lines
667 B
JavaScript

import React from 'react'
import hoistStatics from 'hoist-non-react-statics'
import { getDisplayName } from 'next-server/dist/lib/utils'
import { RouterContext } from './router'
export default function withRouter (ComposedComponent) {
const displayName = getDisplayName(ComposedComponent)
function WithRouteWrapper (props) {
return (
<RouterContext.Consumer>
{router => (
<ComposedComponent
router={router}
{...props}
/>
)}
</RouterContext.Consumer>
)
}
WithRouteWrapper.displayName = `withRouter(${displayName})`
return hoistStatics(WithRouteWrapper, ComposedComponent)
}