React-Router onChange 钩子

IT技术 javascript reactjs react-router
2021-05-07 18:39:21

我在让 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>

我究竟做错了什么?

2个回答

onUpdate需要在Router实例上声明而不是Routes。虽然,Routes 可以声明onChangeonEnter挂钩 - 这可能是您正在寻找的。

我正在使用 react-router ^2.4.0 并且 onUpdate 对我不起作用。我在我的基本 Route 组件上使用了 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>);