react中路由的扩展使用(NavLink、Switch、Redirect、精准匹配与模糊匹配)

一、NavLink的使用

1.1NavLink 和普通的 Link 都可以用来进行路由跳转。它们之间的区别在于:

NavLink 组件在页面中渲染为一个 a 标签,默认会添加 active class,用于标识当前路由。可以通过 activeClassName 和 activeStyle 自定义 active class 和样式。

NavLink 可以通过 exact 属性来指定是否精确匹配路由,如果为 true 则只匹配路由完全相同的情况,否则会按照路径前缀的方式匹配。例如,如果 NavLink 的 to 属性为 /users,则精确匹配指的是只有在路径为 /users 时才会被选中,非精确匹配指的是在路径为 /users/* 时都会被选中,包括 /users/1、/users/2 等。

NavLink 还可以通过 activeClassName 和 activeStyle 的设置来自定义选中样式。

总之,NavLink 是一个能够更好地帮助我们完成路由选中状态标识的组件。如果只是简单的进行路由跳转,使用 Link 即可。
1.2 NavLink的导入

import {
    
     NavLink} from 'react-router-dom'

1.3 NavLink的使用

{
    
    /* Navlink :当被点击时添加一个类名 active */}
                <NavLink className="list-group-item " to='/about'>About</NavLink>
                <NavLink className="list-group-item " to='/home'>Home</NavLink>
  

二、Switch标签 和 Redirect标签 的使用

2.1、在 React 中,Switch 标签是 React Router 中提供的一个组件,它的主要作用是用来选择性地渲染一个路由。

原本的路由匹配会匹配所有的路由,就算已经匹配成功了,还是会继续往下匹配。

Switch 组件会在所有的子组件中寻找第一个与当前路径匹配的 Route 组件,并且仅渲染该组件。
2.2、Switch 和 Redirect 的导入

import {
    
     Redirect, Switch } from 'react-router-dom'

2.3、Switch 和 Redirect的使用
通常情况下 path 和 component 是一一对应的关系
用 Switch标签 包裹路由 和路由链接匹配上后 不在向后匹配
如果一个都没有匹配成功,就走 Redirect标签中的 路由链接

 {
    
    /* 注册路由 */}
              
           <Switch>
             <Route path='/about' component={
    
    About} />
             <Route path='/home' component={
    
    Home} />
             
              <Redirect to="/home" />
                  {
    
    /* 
                    Redirect: 
                            一般写在所有路由注册最下方,当所有路由都没有匹配成功时,
                            就跳转到 Redirect 指定的路由

                */}
           </Switch>

三、Src的精准匹配与模糊匹配

3.1 exact 是否开启精准匹配,默认是false
3.1.1. 精准匹配:
路由链接to 必须和 路由path 一模一样 才能匹配成功
如 to=“/home/b/a” 与 path=“/home” 不能匹配成功
3.1.2模糊匹配:
路由链接to 和 路由path 的第一个路径相同 就能匹配成功。
如 to=“/home/b/a” 与 path=“/home” 能匹配成功

扫描二维码关注公众号,回复: 17066769 查看本文章
 <Route exact={
    
    true} path='/about' component={
    
    About} />
 <Route exact={
    
    true} path='/home' component={
    
    Home} />

注意:不要随便开启精准匹配
个人博客:余生的学习笔记

猜你喜欢

转载自blog.csdn.net/m0_63135041/article/details/130320157
今日推荐