React15-路由组件重定向与路由表

134 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情

二、重定向

只需要对APP.jsx里面的注册路由里面,添加一条空路径的清空,即可完成重定向

                 <div className="col-xs-6">
                     <div className="panel">
                         <div className="panel-body">
                             {/* 注册路由 */}
                             <Routes>
                                 <Route path='/about' element={<About/>}/>
                                 <Route path='/home' element={<Home/>}/>
                                 <Route path='/' element={<Navigate to='/about'/>}></Route>
                             </Routes>
                         </div>
                     </div>
                 </div>

image.png

三、NavLink高亮

在APP.jsx的基础上添加

     function computedClassName({isActive}){
         return isActive ? 'list-group-item atguigu' : 'list-group-item'
     }

image.png 还需要将这里的className属性改成我们自己写的css代码

                 <div className="col-xs-2 col-xs-offset-2">
                     <div className="list-group">
                         {/* 路由链接 */}
                         <NavLink className={computedClassName} to='/about'>About</NavLink>
                         <NavLink className={computedClassName} to='/home'>Home</NavLink>  
                     </div>
                 </div>

image.png

image.png

四、useRoutes路由表

在两个地方进行更改:

一个是APP.jsx,

需要在开头添加规则

const element = useRoutes(routes)

之后是在注册路由的地方

{element}

直接这样就可以了,不用像原来那样:

{/* 注册路由 */} <Route path='/about' element={}/> <Route path='/home' element={}/> <Route path='/' element={}>

需要写很多重复的内容

完整代码

 import React from "react";
 import { useRoutes, NavLink} from "react-router-dom";
 import routes from './routes'
 ​
 export default function APP(){
     //根据路由表生成对应的路由规则
     const element = useRoutes(routes)
     return (
         <div>
             <div className="row">
                 <div className="col-xs-offset-2 col-xs-8">
                     <div className="page-header"><h2>React Router Demo</h2></div>
                 </div>
             </div>
             <div className="row">
                 <div className="col-xs-2 col-xs-offset-2">
                     <div className="list-group">
                         {/* 路由链接 */}
                         <NavLink className='list-group-item' to='/about'>About</NavLink>
                         <NavLink className='list-group-item' to='/home'>Home</NavLink>  
                     </div>
                 </div>
                 <div className="col-xs-6">
                     <div className="panel">
                         <div className="panel-body">
                             {/* 注册路由 */}
                             {element}
                         </div>
                     </div>
                 </div>
             </div>
         </div>
     )
 }

routes文件夹

还需要在src目录下创建一个文件夹:routes,专门来保存路由链接,这是在v6版本里面独有的,区别于原来的router5

 import { Navigate } from "react-router-dom";
 import About from '../pages/About';
 import Home from '../pages/Home'
 ​
 export default [
     {
         path:'/about',
         element:<About/>
     },
     {
         path:'/home',
         element:<Home/>
     },
     {
         path:'/',
         element:<Navigate to='/about'/>
     }
 ]