react路由的withRouter

withRouter结合路由懒加载使用
路由代码

import React from 'react'
import {HashRouter,Route,Link,Switch} from 'react-router-dom'
import B from './bLoad'
class A extends React.Component//A组件根路由
{
    constructor(){
        super()

    }
    to=()=>{
        console.log(this.props)
      
    }

    render(){
        return<div>
     <span>主页</span>
     <button onClick={this.to.bind(this)}>获取路由信息</button>
        </div>
    }
}


class selectRouter extends React.Component
{
    constructor(){
        super()
    }
    componentDidMount(){
        console.log(this.props)
    }
    render(){
        return <div>
            <HashRouter>
            <div>
                <Link to="/">a</Link>
                <Link to="/b">b</Link>
            </div>
            <Switch>
                <Route exact path="/" component={A}></Route>
                <Route path="/b" component={B}></Route>
            </Switch>
            </HashRouter>
        </div>
    }
}
export default selectRouter;

路由懒加载包的引用使用

import React from 'react'
import load from 'react-loadable'

class LoadCo extends React.Component
{
    constructor(){
        super()
    }
    render(){ 
            return <div>loading</div>
    }
}
const Loa=load(
    {
    loader:() => import("./b"),
    loading:LoadCo  
    }
)
class loadCom extends React.Component
{
    constructor(){
        super()
    }
    render(){
        return <Loa/>
    }
}
export default loadCom;
B组件
import React from 'react'
import {withRouter} from 'react-router-dom'
class B extends React.Component
{
    constructor(){
        super()
        this.to=this.to.bind(this)

    }
    to(){
     console.log(this.props)
        this.props.history.push({
            pathname:"/",
            query:{
                name:"liu"
            }
        })
    }
    // to=()=>{
    //     console.log(this.props)
    //     this.props.history({
    //         path:"/",
    //         query:{
    //             name:"liu"
    //         }
    //     })
    // }
    render(){
        return<div>
            <button onClick={this.to}>跳转主页面</button>
        </div>
    }
}
export default withRouter(B);

总结两点
第一
路由懒加载的时候
如果不使用withRouter注入路由属性和方法
在懒加载的组件里面通过方法操作路由 就会报错

第二
注意函数方法的使用
a=()=>{} onClick={(e)=>{this.a(e)}}
a(){} onClick={this.bind.a(this)}//一个形参 默认接收参数 两个形参输出event
获取event使用以上方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值