Свойство соответствия React Router null при использовании пользовательского компонента Route - PullRequest
0 голосов
/ 26 февраля 2019

Я использую компонент 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}
    />

и матч обновляется должным образом.

Я в тупике, почему это происходит. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 26 февраля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...