我使用以下方法跳转:
先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代码里)难道不能控制路由吗?或者还有什么我不知道的方法?
相关分类