2016-09-06 120 views
8

我遇到的問題是在react-router的onChange鉤子正常工作。這裏是我的路線文件:React-Router onChange鉤子

import React from 'react'; 
import { Router, Route, browserHistory } from 'react-router'; 
import TestOne from './Pages/testone'; 
import TestTwo from './Pages/testtwo'; 

function logUpdate() { 
    console.log('Current URL: ' + window.location.pathname); 
} 

const Routes = (
    <Router history={browserHistory}> 
     {/* App Routes */} 
     <Route path="/" component={App} lang={lang}> 
      <Route path="/testone" component={TestOne} onUpdate={logUpdate} /> 
      <Route path="/testtwo" component={TestTwo} onUpdate={logUpdate} /> 
     </Route> 
    </Router>); 

export default Routes; 

我的理解是,函數logUpdate將在每次狀態更改時觸發。但是,只有當我通過F5重新加載相應的頁面時纔會觸發它。

我的菜單,使用簡單的鏈接例如: -

<div> 
<Link to="/testone">Test One</Link> 
<Link to="/testtwo">Test Two</Link> 
</div> 

我在做什麼錯?

回答

5

onUpdate需要在Router實例上聲明,而不是Route s。雖然,Route s可以聲明onChangeonEnter鉤 - 這可能是你正在尋找的。

+0

太棒了,簡直不敢相信我錯過了!謝謝Igorsvee – Dave

+0

這些鏈接用於版本2.X,現在反應路由器在4.0上:) –

0

我正在使用react-router^2.4.0,並且onUpdate對我無效。我已經在我的基礎路由組件上使用了onChange。

const Routes = (
    <Router history={browserHistory}> 
     {/* App Routes */} 
     <Route path="/" component={App} lang={lang} onChange={logUpdate}> 
      <Route path="/testone" component={TestOne} /> 
      <Route path="/testtwo" component={TestTwo} /> 
     </Route> 
    </Router>);