react-router4如何在组件外控制跳转?

使用react-router-dom 4,由于想在网络请求中统一处理出错信息(如404,500等),当出错时跳转到相应的页面(如404页,500页),但是网络请求模块(request.js)是一个纯js的文件(不是组件),因此无法利用 props.history 控制跳转,请问有什么方法吗?

(看到一个使用 history 的 hack 方法,想知道有没有别的好点的或正统的方法)

相关代码

// request.js
// 错误统一处理模块
const errorHandler = error => {
    // ...
    if(status === 404){
        // 如何控制跳转到 404页??
    }
    // ...
}

补充

目前采用的方法是是在网络请求模块中使用 href 或 pathname 强制刷新网页一次,感觉是没有办法的办法。

阅读 4.9k
4 个回答

可以将错误处理的结果返回到组件层,在组件层做跳转。

新手上路,请多包涵

import { BrowserRouter } from "react-router-dom";
const router = new BrowserRouter();
router.history.push('/');

新手上路,请多包涵

给你贴个 react-router 官方文档的图
你只需要把const customHistory = createBrowserHistory()那行,单独放个文件
然后在你的网络请求模块里 require 这个文件,就可以了。

history 需要单独安装:

npm install history
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题