现在公司的后台系统使用蚂蚁金服的dva.js,基于react+redux的封装,使用的是dva-cli,现在要做登录认证。react-router-dom中好像没有类似vue中的beforeEach钩子函数,可以拦截路由。importReactfrom'react';import{Router,Route,Switch,Redirect}from'dva/router';importrouterListfrom'./common/routerList';importError404from'./routes/Error/Error404';exportdefaultfunctionRouterConfig({history,app}){consttoken=app._store.getState().user.token;console.log('routergettoken:',token);constRouters=routerList.map((item,index)=>{return{ if(item.noAuth){//如果是不用登录就可访问的页面,直接返回return; }else{if(token){return; }else{returnpathname:'/login', state:{from:props.location}}}/>}}}}/>});return( {Routers}( )}/>);}这是我做的路由拦截,但是只有在第一次进入页面,或者页面刷新后才会有效果,应该怎么改呢然后登录的时候,使用this.props.history.push()或者this.props.history.replace()也不能跳转到首页this.props.dispatch({type:'user/saveUserInfo',payload:{userId,nickName,headImageUrl,userName}});this.props.dispatch({type:'user/saveToken',payload:token});letRedirectUrl=this.props.location.state?this.props.location.state.from.pathname:'/';console.log(RedirectUrl);this.props.history.replace(RedirectUrl);
胡说叔叔
相关分类