在 React Router v4 和更高版本中,要实现 history.push
,你需要访问 history
对象
react-router-dom
引入 withRouter
:
import { withRouter } from 'react-router-dom';
withRouter
高阶组件 (HOC) 包装你的组件,使其具有 history
属性:
class MyComponent extends React.Component { // ... } export default withRouter(MyComponent);
this.props.history
中访问 history
对象,并使用 push
方法导航到新路径:
class MyComponent extends React.Component { handleNavigate = () => { this.props.history.push('/new-path'); }; render() { return ( <button onClick={this.handleNavigate}>Go to new path</button> ); } } export default withRouter(MyComponent);
如果你使用的是函数组件,可以使用 useHistory
Hook:
react-router-dom
引入 useHistory
:
import { useHistory } from 'react-router-dom';
useHistory
Hook 创建 history
对象,并使用 push
方法导航到新路径:
import React from 'react'; import { useHistory } from 'react-router-dom'; const MyComponent = () => { const history = useHistory(); const handleNavigate = () => { history.push('/new-path'); }; return ( <button onClick={handleNavigate}>Go to new path</button> ); }; export default MyComponent;
这样,你就可以在 React Router v4 和更高版本中实现 history.push
功能了。
北极星训练营
云+社区沙龙online [技术应变力]
腾讯云数据湖专题直播
云+社区技术沙龙[第14期]
企业创新在线学堂
北极星训练营
实战低代码公开课直播专栏
北极星训练营
云+社区技术沙龙[第11期]
企业创新在线学堂
领取专属 10元无门槛券
手把手带您无忧上云