2016-03-24 5 views
4

Вне моих компонентов мне нужно запросить текущий активный URL-адрес. На основе этого я собираюсь установить некоторые классы на теле (который находится вне моего реагирующего корня).Получить текущий путь страницы от браузера реакции-маршрутизатораИсторический объект

Первая попытка была использовать

//Gets an array of class names that I can add to my body tag 
getClassNames(window.location.pathname); 

Но, кажется window.location.path не обновляется когда React маршрутизатор переходит. Удивительно, да.

Так что я подумал, хорошо, может быть, я могу получить это от browserHistory

import { browserHistory } from 'react-router' 

Но, увы, я не могу видеть способ чтения текущего пути страницы здесь либо (никакой документации приличной API не кажется, существует для этого объекта)

Любые советы? Кажется, простая проблема, и было бы, если window.location.pathname оставалось в синхронизации с объектом history.

ответ

5

ОК от 2017 года, по крайней мере, местоположение доступна через

browserHistory.getCurrentLocation();

const location = browserHistory.getCurrentLocation(); 
console.log(location); 
+2

В [email protected] следует называть 'location.pathname' –

5

Единственный способ я знаю, чтобы сделать это прямо сейчас, чтобы использовать слушателя как

import { browserHistory } from 'react-router' 
browserHistory.listen(function(event) { 
    //manage the pathname on your own 
    console.log(event.pathname); 
}); 

Не идеально, но даже после того, глядя на библиотеку DOMUtils используемой истории, ее реализация getWindowPath() включает в себя путь, поиск и хеш-строки. Однако, глядя на ссылку docs для вас на GitHub, история, похоже, получила переиздание v3 по состоянию на ~ 20 дней назад и теперь включает в себя pathUtils module, который может быть вам полезен.

Смежные вопросы