Получение информации о местоположении в компоненте, где инициализирован BrowserRouter - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь заставить react-router работать с transition-group, но наткнулся на проблему, что я не могу получить доступ к location напрямую в этом компоненте.Есть ли решение, которое не требует создания другого дочернего компонента, который я бы включил в withRouter для доступа к location?

class App extends React.Component {
  public render() {
    return (
      <BrowserRouter basename={process.env.PUBLIC_URL}>
        <React.Fragment>
          <Navigation language={"en"} />
          <Switch>
            <TransitionGroup>
             <CSSTransition location={this.props.location} timeout={300} classNames="fade"> 
              <Route
                path="/p"
                render={() => {
                  return (
                    <Layout>
                      <P/>
                    </Layout>
                  );
                }}
              />
              <Route
                path="/v"
                render={() => {
                  return (
                    <Layout>
                      <V/>
                    </Layout>
                  );
                }}
              />
             </CSSTransition> 
            </TransitionGroup>
          </Switch>
        </React.Fragment>
      </BrowserRouter>
    );
  }
}

1 Ответ

0 голосов
/ 10 октября 2018

При рендеринге компонентов с использованием метода render необходимо передать реквизиты маршрутизатора к компоненту, выполняющему рендеринг, как

   <Route
            path="/p"
            render={(props) => {
              return (
                <Layout {...props}>
                  <P/>
                </Layout>
              );
            }}
          />
          <Route
            path="/v"
            render={(props) => {
              return (
                <Layout {...props}>
                  <V/>
                </Layout>
              );
            }}
          />
...