Я использую компонент ConnectedRouter
и собственный маршрут, например, так:
const PrivateRoute = ({ layout: Layout, component: Component, rest }) => (
<Route
{...rest}
render={matchProps => (
<AuthConsumer>
{({ authenticated }) =>
authenticated ? (
<Layout pathname={matchProps.location.pathname}>
<Component {...matchProps} />
</Layout>
) : (
<Redirect to={{ pathname: '/login', state: { from: matchProps.location } }} />
)
}
</AuthConsumer>
)}
/>
)
, который я использую следующим образом:
<Switch>
<PrivateRoute
exact
path={`${match.url}someroute/:id`}
layout={Layout}
component={SomePage}
/>
</Switch>
И компонент, подобный так:
import React from 'react'
const SomePage = ({ match }) => {
console.log('MATCH ', match.params)
return <div>TESTING</div>
}
export default SomePage
В этом случае match
пуст, и он считает, что находится на маршруте '/' (хотя location
prop говорит, что он на /someroute/123
.
С другой стороны.стороны, это работает:
<Route
exact
path={`${match.url}someroute/:id`}
component={SomePage}
/>
и матч обновляется должным образом.
Я в тупике, почему это происходит. Любая помощь будет оценена!