Skip to content

react-router刚开始的配置(类组件版)如下:

jsx
<Routes>
  <Route path="/" element={<Navigate to="/home" />} />
  <Route path="/home" element={<Home />}>
    <Route path="/home" element={<Navigate to="/home/recommend" />} />
    <Route path="/home/recommend" element={<HomeRecommend />} />
    <Route path="/home/ranking" element={<HomeRanking />} />
    <Route path="/home/songMenu" element={<HomeSongMenu />} />
  </Route>
  <Route path="/about" element={<About />} />
  <Route path="/category" element={<Category />} />
  <Route path="/login" element={<Login />} />
  <Route path="/detail/:id" element={ <Detail /> } />
  <Route path="/user" element={ <User /> } />
  <Route path="*" element={<NotFound />} />
</Routes>

这样会大大增加页面的复杂程度,原本一个页面只需要写html和js就行的,路由把他单独提取到一个文件就行了,类似于vue。 react-router v6版本提供了一个函数——useRoutes,这个函数可以将我们写的配置转换成上面那种形式,这里的配置是一个数组对象

javascript
const routes = [
  {
    path: '/',
    element: <Navigate to={<Home />} />
  },
  {
    path: '/home',
    element: <Home />,
      children: [
      {
        path: 'recommend',
        element: <HomeRecommend />
        },
        {
        path: 'ranking',
        element: <HomeRanking />
        },
        {
        path: 'songMenu',
        element: <HomeSongMenu />
        }
        ]
        },
        {
        path: '/about',
        element: <Navigate to={<About />} />
        },
        {
        path: '/category',
        element: <Navigate to={<Category />} />
        },
        {
        path: '/login',
        element: <Navigate to={<Login />} />
        },
        {
        path: '/detail/:id',
        element: <Navigate to={<Detail />} />
        },
        {
        path: '/user',
        element: <Navigate to={<User />} />
        },
        {
        path: '*',
        element: <Navigate to={<NotFound />} />
        },
        ]