1. 模糊匹配
<HashRouter>
<NavLink activeClassName="acc" to="/a">
a
</NavLink>
<NavLink activeClassName="acc" to="/b/c/d">
b
</NavLink>
<Switch>
<Route path="/a" component={Page1} />
<Route path="/b" component={Page2} />
</Switch>
</HashRouter>
- Link的to属性指向多级路径,Route的组件的path属性相匹配其中的一级路径,就可以路由成功,如上述代码的第二个Route组件。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/89485e076a09368d925eca70caa86690.png)
2.严格匹配
<HashRouter>
<NavLink activeClassName="acc" to="/a">
a
</NavLink>
<NavLink activeClassName="acc" to="/b/c/d">
b
</NavLink>
<Switch>
<Route exact={true} path="/a" component={Page1} />
<Route exact={true} path="/b" component={Page2} />
</Switch>
</HashRouter>
- 给Route组件的exact属性设置为true,那么path属性必须与Link的to属性完全一致,才能路由成功,上述代码中的第二个Route组件就不能匹配成功。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/537a00f22a4ab14387ada504fec6a4f3.png)
<Route exact={true} path="/a" component={Page1} />
可以简写成
<Route exact path="/a" component={Page1} />
3.注意
- Route的exact属性一般不使用,因为有时候会导致无法继续匹配二级路径。