首页 > 其他 > 详细

写在方法中的路由跳转

时间:2019-03-12 10:08:54      阅读:122      评论:0      收藏:0      [点我收藏+]

场景:login页面点击登陆按钮,登陆成功后,进入home页面;(当然,这里就不能用Link跳转了)

问题:history的报错;

解决:需要引入react-router-dom中的withRouter

import {withRouter} from ‘react-router-dom‘;

 

然后在暴露出组件的时候,用withRouter给包裹起来~像这样:

class Home extends Component {

}
export default withRouter(Home) //重点

最后,在你需要跳转的login页面:

//注意:HashRouter不支持state。。。BrowserRouter才支持state,但是BrowserRouter本身需要后端做相应的配置
     this.props.history.push( `/expert-detail/${LecturerID}`)//不带state

    this.props.history.push({pathname: `/expert-detail/${LecturerID}`,state:data})//带有state

 

总结:

withRouter解决了方法中路由跳转的问题,解决了history报错
了解了HashRouter与BrowserRouter的异同,这里我选用了BrowserRouter来配置路由。
分享:
import { BrowserRouter as Router,Route, Switch, Redirect } from ‘react-router-dom‘
    <Router>
        <Switch>
          <Route exact path="/"
            render={ () => {
                if(loginSuccess){ //判断是否已经登陆
                  return <Redirect to="/home" />
                }else{
                  return <Redirect to = "/login" />
                }
              }
            }
          />
          <Route exact path="/login" component={ Login } />
          <Home>
            { CHILD_ROUTES.map(item => {
              return <Route key={ item.id } path={ item.path } component={ item.main } />
            }) }
          </Home>
        </Switch>
      </Router>

 



写在方法中的路由跳转

原文:https://www.cnblogs.com/wang715100018066/p/10514730.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!