react class 怎么监听路由
时间: 2023-08-23 16:31:37 浏览: 165
要监听 React 中的路由变化,可以使用 `react-router-dom` 库中提供的 `withRouter` 高阶组件,它可以将路由相关的属性和方法(如 `match`、`location` 和 `history`)注入到组件的 props 中。然后就可以在组件中监听路由变化了。
以下是一个示例:
```javascript
import { withRouter } from 'react-router-dom';
class MyComponent extends React.Component {
componentDidMount() {
// 在组件挂载后,添加路由变化的监听器
this.unlisten = this.props.history.listen((location, action) => {
console.log('路由变化:', location.pathname);
});
}
componentWillUnmount() {
// 在组件卸载前,移除路由变化的监听器
this.unlisten();
}
render() {
return <div>Hello World</div>;
}
}
export default withRouter(MyComponent);
```
在 `componentDidMount` 中,我们调用 `history.listen` 方法来注册一个路由变化的监听器,并将返回的取消监听的函数保存在实例属性 `unlisten` 中。在 `componentWillUnmount` 中,我们调用 `unlisten` 来移除监听器。
在监听器的回调函数中,我们可以获取到路由变化的信息,如当前的路径名 `location.pathname`。你也可以根据需要对其他属性进行监听。
需要注意的是,组件必须通过 `withRouter` 包装后才能获取到路由相关的属性和方法。
阅读全文