You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过module.exports暴露React类实例,替代react-router的withRouter?

绕过withRouter,直接从BrowserRouter实例调用history方法

我知道这个标题可能有点让人摸不着头脑,下面直接说具体的实现思路和逻辑:

我们的核心目标是避免使用react-router中的withRouter高阶组件,转而直接从BrowserRouter的单例组件实例中获取push、pop这类history路由方法。

具体实现步骤很简单:

  • 第一步,给你的BrowserRouter组件添加一个ref引用,写法如下:
    <BrowserRouter ref="router" />
    
  • 第二步,通过模块导出的方式,把实例上的history方法暴露出去,比如:
    module.exports.push = this.refs.router.push;
    // 按需导出其他需要的方法,比如pop、replace等
    module.exports.pop = this.refs.router.pop;
    

这样一来,其他组件就可以直接导入这些方法来进行路由跳转,完全不需要依赖withRouter来注入路由相关的props了。

内容的提问来源于stack exchange,提问作者Stef van Wijchen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:22:50