Использование React Router withRouter

Как вы получаете контекст маршрутизации, местоположение, параметры и т.д. при использовании withRouter()?

import { withRouter } from 'react-router';

const SomeComponent = ({location, route, params}) => (
    <h1>The current location is {location.pathname}</h1>
);

const ComposedWithRouter = withRouter(SomeComponent);

Вы можете получить эту информацию, используя withRouter, или эти вещи должны быть явно переданы по дереву компонентов?

Ответ 1

Итак, больше не пользуйтесь context. Все это доступно в реквизитах:

SomeComponent.propTypes = {
  location: React.PropTypes.shape({
    pathname: React.PropTypes.string,
    query: React.PropTypes.shape({
      ...
    })
  }),
  params: React.PropTypes.shape({
    ...
  }),
  router: React.PropTypes.object
}

const ComposedWithRouter = withRouter(SomeComponent);

Итак, тогда скажем в SomeComponent, что вы хотите отправить пользователя на новый маршрут, просто выполните this.props.router.push('someRoute')

Ответ 2

Получение местоположения и т.д. через withRouter было добавлено в Agent-маршрутизаторе версии 2.7. Дэн Абрамов рекомендует обновить до 3.0 для использования с маршрутизатором. До версии 2.7 он предоставлял только набор функций.