react4.X的路由问题

  • Switch
    为了解决route的唯一渲染,它是为了保证路由只渲染一个路径。
    是唯一的,因为它仅仅只会渲染一个路径,当它匹配完一个路径后,就会停止渲染了。相比之下(不使用 包裹的情况下),每一个被location匹配到的将都会被渲染
<HashRouter>
                        <Switch>
							<Route  path="/" component={Login} />
                            <Route  path="/admin" component={Admin} />
                        </Switch>
</HashRouter>

这样不管如何匹配,都只会匹配到/(不会匹配到/admin)
要想解决这个问题,,可加exact匹配(exact并不是随随便便加的,每个都加也会出现问题)

<HashRouter>
                        <Switch>
							<Route  exact path="/" component={Login} />
                            <Route  path="/admin" component={Admin} />
                        </Switch>
</HashRouter>

exact是Route的一个属性,认为其是一种严格匹配模式

当exact为false时,根据路由匹配所有组件,如"/" 匹配 “/”、“/home”、“/home/menu”;

当exact为true时,则“/” 仅匹配“/”、无法匹配到“/home”。

实际应用中设置该属性,取决于页面的构造。

若一个路由对应一个独立的页面(非嵌套),则可使用exact:true,这样能够保证在路由为“/home”时不会匹配到“/”对应组件。

若一个路由对应是页面中局部view时,则exact设为false,否则因“/home/menu” 无法匹配“/home”,导致父组件无法渲染更别提嵌套的局部view。

  • React-Router4.X路由的嵌套以及实例
    React-Router4.x中 路由配置思想和之前的不太一样,2.x、3.x原路由配置为集中思想,即在一个js中嵌套加嵌套,但是在4.x中采用分散思想,即路由的配置放在每一个组件中,嵌套的子组件配置写在父组件所在的js文件中。
  • 在实现实现了组件的嵌套,在这里的写法呢需要注意两点:
    1、match:match作为react-router中的对象,通过this.propos使用,网上存在const加参数match写法,与这里不同。
    2、父子组件:子组件路由路径必须在父组件之下,即父组件为/about,那么子组件需要为/about/xxx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值