Sie können die history.listen()Funktion verwenden, wenn Sie versuchen, die Routenänderung zu erkennen. Wenn Sie verwenden react-router v4, wickeln Sie Ihre Komponente mit withRouterHOC ein, um Zugriff auf die historyRequisite zu erhalten.
history.listen()gibt eine unlistenFunktion zurück. Sie würden dies verwenden, um unregisterzuzuhören.
Sie können Ihre Routen wie konfigurieren
index.js
ReactDOM.render(
<BrowserRouter>
<AppContainer>
<Route exact path="/" Component={...} />
<Route exact path="/Home" Component={...} />
</AppContainer>
</BrowserRouter>,
document.getElementById('root')
);
und dann in AppContainer.js
class App extends Component {
componentWillMount() {
this.unlisten = this.props.history.listen((location, action) => {
console.log("on route change");
});
}
componentWillUnmount() {
this.unlisten();
}
render() {
return (
<div>{this.props.children}</div>
);
}
}
export default withRouter(App);
Aus der Geschichte docs :
Sie können auf Änderungen am aktuellen Speicherort warten, indem Sie
history.listen:
history.listen((location, action) => {
console.log(`The current URL is ${location.pathname}${location.search}${location.hash}`)
console.log(`The last navigation action was ${action}`)
})
Das Standortobjekt implementiert eine Teilmenge der Schnittstelle window.location, einschließlich:
**location.pathname** - The path of the URL
**location.search** - The URL query string
**location.hash** - The URL hash fragment
Standorte können auch die folgenden Eigenschaften haben:
location.state - Ein zusätzlicher Status für diesen Standort, der sich nicht in der URL befindet (unterstützt in createBrowserHistoryund
createMemoryHistory)
location.key- Eine eindeutige Zeichenfolge, die diesen Speicherort darstellt (unterstützt in createBrowserHistoryund createMemoryHistory)
Die Aktion hängt davon PUSH, REPLACE, or POPab, wie der Benutzer zur aktuellen URL gelangt ist.
Wenn Sie verwenden , reagieren-Router v3 können Sie Gebrauch machen history.listen()von historyPaket wie oben erwähnt , oder Sie können auch Gebrauch machenbrowserHistory.listen()
Sie können Ihre Routen wie konfigurieren und verwenden
import {browserHistory} from 'react-router';
class App extends React.Component {
componentDidMount() {
this.unlisten = browserHistory.listen( location => {
console.log('route changes');
});
}
componentWillUnmount() {
this.unlisten();
}
render() {
return (
<Route path="/" onChange={yourHandler} component={AppContainer}>
<IndexRoute component={StaticContainer} />
<Route path="/a" component={ContainerA} />
<Route path="/b" component={ContainerB} />
</Route>
)
}
}