react-tips2: route 的exact参数的设置问题

 

使用 react-router-dom 中的 <Route> 组件,这个组件有个参数  exact ,

下面举个例子,

<Route  path="/" component={Home} />
<Route  path="/introduce" component={Introduce} />
<Route  path="/detail" component={Detail} />

上面的三个路由,如果我们先输入的网址是根目录,那么会显示 Home 这个组件,因为匹配到了 path =" / ";

                             如果我们先输入的网址是 /introduce 那么会显示 Home 和 Introduce 这两个组件;

                             因为路由的匹配的时候不是严格按照 /introduce匹配的,所以导致这个问题;

                              <Route> 组件的参数 exact 的作用就是严格匹配路由;

 

 上面的代码其实和下面这样写是一样的:

默认情况下没有参数exact 的效果等同于 exact = {false}

注意:  是 exact = { false } , 而不是 exact = "false"

<Route  exact={false} path="/" component={Home} />
<Route  exact={false} path="/introduce" component={Introduce} />
<Route  exact={false} path="/detail" component={Detail} />

 我们要解决上面的问题,设置 exact = { true } 即可,如下:

<Route  exact={true} path="/" component={Home} />
<Route  path="/introduce" component={Introduce} />
<Route  path="/detail" component={Detail} />

当设置 根目录的路由为严格的匹配时,我们访问 /introduce 的的时候或者 /detail 的时候,

就不会再显示根目录显示的页面了;

 

出现上面的问题的原因是,路由在匹配的时候,比如我们现在访问 /introduce ,  / 根目录是 /introduce 的子集;

所以导致匹配成功,也就是说,没有设置严格匹配,也就是 exact = { true } 的情况下,路由的子集也是符合匹配要求的;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值