2016-05-16 2 views
0

Я пытаюсь понять, что такое «реагировать» на доступ к текущему местоположению приложения с помощью response-router (v2.4.0). До нового среагировать-маршрутизатор нарушения изменений и т.д., я был в состоянии использоватьПравильный способ доступа к CurrentPath in React

this.context.router.getCurrentLocation() 

Теперь, кажется, что я снова могу впрыснуть маршрутизатор в контекст моего компонента, но сам экземпляр маршрутизатора не содержит API для получить что-либо, связанное с текущим местоположением или параметрами запроса и т. д. Итак, возник логический вопрос: «Я делаю это правильно?».

После некоторого исследования выяснилось, что компонент Route компонента-адаптера, который я использую, вводит местоположение в свойства компонента, который отображается на этот маршрут. И это здорово! Однако в моем случае у меня есть несколько слоев компонентов, вложенных глубоко в главный компонент, который сопоставлен с Route, поэтому: «Я должен передать this.props.location вплоть до компонента, который действительно понадобится, или там более человечный способ сделать это? "

Итак, какой правильный способ получить текущий маршрут маршрутизатора, параметры запроса и тому подобное, которые могут понадобиться в коде? Должен ли я работать с объектами this.props.router и/or browserHistory напрямую, должен ли я найти способ распространять this.props.location туда, где он мне понадобится, или мне что-то не хватает на картинке?

Спасибо за ваше время!

ответ

1

Это зависит немного от структуры вашего приложения для подхода, который вы предпримете, но да this.props.location.query будет содержать ваши параметры запроса для данного компонента маршрута в response-router v2 +.

Если, например, вы посетили что-то вроде /result?foo=bar&apple=orange, от компонента маршрута можно найти bar от this.props.location.query.foo и orange от this.props.location.query.apple

this.props.params с другой стороны, будет содержать общие динамические параметры, которые могут отображаться в маршруте, так для чего-то вроде /profile/users/:userID, вы можете найти свой идентификатор пользователя по данному маршруту в this.props.params.userID.

Вы можете передать их как реквизиты для любых дочерних компонентов, которые им нужны, так же, как и любой другой компонент React, но вы также можете подумать о том, должны ли эти дети сами входить в маршруты или иметь прямой доступ к своим собственным this.props... маршрутизатор, или если родитель способен обработать логику самостоятельно, прежде чем передавать их.

Официальных документов дают некоторые довольно хорошие примеры и случаи использования для построения вашего приложения, и стоит проверить: https://github.com/reactjs/react-router/blob/master/docs/Introduction.md

+0

Ну, я могу согласиться, что во многих случаях можно разработаны компоненты, которые нуждаются в информации о местоположении, чтобы контроллер/предоставляемый маршрутизатором, однако иногда это невозможно. Во всяком случае, дело в том, нравится мне это или нет, так реагирует на то, что местоположение маршрутизатора будет использоваться ... –