Я использую компонент 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.info('MATCH ', match.params)
return <div>TESTING</div>
}
export default SomePage
В этом случае match пуст, и он думает, что находится на маршруте '/' (хотя location prop говорит, что он на /someroute/123.
С другой стороны, это работает:
<Route
exact
path = {`${match.url}someroute/:id`}
component = {SomePage}
/>
и матч обновляется правильно.
Я в тупике, почему это происходит. Любая помощь будет оценена по достоинству!





А, я разбираюсь. rest должен был быть ...rest, компонент <Route> неправильно передавал реквизит!