2016-09-06 20 views
8

Tôi gặp sự cố khi nhận móc onChange trong bộ phản ứng-bộ định tuyến để hoạt động bình thường. Đây là các tệp tuyến đường của tôi:React-Router onChange hook

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; 

Sự hiểu biết của tôi là chức năng logUpdate sẽ được kích hoạt trên mỗi thay đổi trạng thái. Tuy nhiên, nó chỉ được kích hoạt khi tôi tải lại trang tương ứng thông qua F5.

đơn của tôi đang sử dụng Liên kết đơn giản ví dụ .:

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

Tôi đang làm gì sai?

Trả lời

5

onUpdate cần phải được khai báo trên cá thể Router không phải là Route s. Mặc dù, Route s có thể khai báo các móc onChangeonEnter - đó có thể là những gì bạn đang tìm kiếm.

+0

Tuyệt vời, không thể tin rằng tôi đã bỏ lỡ điều đó! Cảm ơn Igorsvee – Dave

+0

Các liên kết này dành cho phiên bản 2.X, hiện phản hồi-bộ định tuyến trên 4.0 :) –

0

Tôi đang sử dụng bộ phản ứng-bộ định tuyến^2.4.0 và onUpdate không hoạt động đối với tôi. Thay vào đó tôi đã sử dụng onChange trên thành phần Route cơ sở của mình.

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>);