2016-03-24 21 views
4

コンポーネントの外に現在のアクティブなURLを照会する必要があります。私はこれに基づいて身体(私の反応の根の外にある)にいくつかのクラスを設定します。反応ルータから現在のページパスを取得するbrowserHistoryオブジェクト

最初の試みは

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

を使用していた。しかし、ルータがナビゲート反応するとwindow.location.path が更新されないようです。驚くべきはい。

は、だから私は大丈夫、多分私はbrowserHistory

import { browserHistory } from 'react-router' 

からこれを取得することができ、と思った。しかし残念ながら、私はどちらか(何もまともなAPIドキュメントが存在していないようにみえここから、現在のページのパスを読み込むための方法を見ることができませんこのオブジェクトの場合)

ヒント?シンプルな問題のように見えますが、window.location.pathnameが履歴オブジェクトと同期していればそうです。

答えて

5

OKが2017のように、少なくとも、位置はlocation.pathname` `呼び出す必要[email protected]

browserHistory.getCurrentLocation();

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

を介して利用可能です –

5

私は今、この権利を行うには知っている唯一の方法は

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

理想のないようにリスナーを使用することですが、でも歴史が使用するDOMUtilsライブラリを見た後、getWindowPath()の実装が含まれてパス名、検索文字列、およびハッシュ文字列。しかし、GitHubでドキュメントリンクを探していると、Historyは〜20日前にv3書き換えを受けたように見え、今はpathUtils moduleが含まれています。