react + dva 的路由跳转问题

我使用以下方法跳转:

先import { routerRedux } from 'dva/router';

如果在组件内部用put(routerRedux.push('/login'))或者dispatch(routerRedux.push('/login'))都没问题,正常跳转,但是我想在一个util里控制跳转,需求是:这个requestUtil发送请求后若收到后台返回的自定义errorCode10101代表用户未登录或着token过期,此时跳转到登录界面.

那么问题来了,在组件外直接使用routerRedux.push('/login')无效,而组件外也没有dispatch这个函数,使用import { dispatch } from 'react-redux';得到的dispatch居然是个class而不是函数,所以我该如何在一个util.js里面控制路由?

另外,在index.js里


const app = dva({

  onError(e, dispatch) {

    console.log(e.message);

  },

});

这个onError确实能收到我抛出的error,也可以用这个dispatch调用push,但是这个方法完了error没有处理掉,不知在那个位置又重新抛出了,进新页面直接挂了,console显示Uncaught Error.所以这个方法也不能用.

我该从什么地方拿到dispatch函数的引用?组件外(普通js代码里)难道不能控制路由吗?或者还有什么我不知道的方法?


海绵宝宝撒
浏览 1919回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript