【React】路由配置之路由表与Route标签两种方式

前言

下文中使用的是react-router-dom6,首先确保正确下载。未提到的细节可以参考ReactRouter官网

npm install react-router-dom@6

方式一:Route标签

import { Route, Routes } from "react-router-dom"

import Dashboard from "@v/Dashborad"
import Project from "@/views/Project"
import Test1 from "@/views/Setting/Test1"
import Test2 from "@/views/Setting/Test2"

function App() {
  // 根据路由表生成对应的路由规则
  return (
    <Routes>
      <Route path="/" element={<Dashboard />}></Route>
      <Route path="/project" element={<Project />}></Route>
      <Route path="/setting/test1" element={<Test1 />}></Route>
      <Route path="/setting/test2" element={<Test2 />}></Route>
    </Routes>
  )
}

export default App

方式二:路由表配置(推荐

声明路由表

import { Navigate, Outlet, RouteObject } from "react-router-dom"

import MyLayout from "@/layout/index"

import Dashboard from "@v/Dashborad"
import Project from "@/views/Project"
import Test1 from "@/views/Setting/Test1"
import Test2 from "@/views/Setting/Test2"

import Login from "@/views/Login"
import NotFound from "@/views/NotFound"

const routes: RouteObject[] = [
  {
    path: "/",
    element: <MyLayout />,
    children: [
      // Navigate 重定向
      {
        path: "",
        element: <Navigate to="/dashboard" />,
      },
      {
        path: "dashboard",
        element: <Dashboard />,
      },
      {
        path: "project",
        element: <Project />,
      },
      {
        path: "setting",
        element: <Outlet />, // 占位符
        children: [
          { path: "test1", element: <Test1 /> },
          { path: "test2", element: <Test2 /> },
        ],
      },
    ],
  },
  // 不需要layout的页面写到外面
  {
    path: "login",
    element: <Login />,
  },
  { path: "*", element: <NotFound /> },
]

export default routes

useRoutes生成路由规则

// 路由
import { useRoutes } from "react-router-dom"
import routes from "./router"

function App() {
  // 根据路由表生成对应的路由规则
  const ElementRouter = useRoutes(routes)
  return <>{ElementRouter}</>
}

export default App

注意:以上两种方式配置完毕后,别忘了在main.tsz中声明路由模式,HashRouter或BrowserRouter。

// router
import { BrowserRouter as Router } from "react-router-dom"

ReactDOM.createRoot(document.getElementById("root")!).render(
  <Router>
    <App />
  </Router>
)
React中,你可以使用lazy函数和Suspense组件来实现按需加载路由组件。这样可以优化初始加载时间并提高应用程序的性能。下面是使用lazy和Suspense配置路由表的步骤: 1. 首先,确保你已经安装了React v16.6或更高版本,因为lazy和Suspense是在这个版本中引入的。 2. 导入lazy和Suspense函数: ```jsx import React, { lazy, Suspense } from 'react'; ``` 3. 使用lazy函数来延迟加载你的路由组件。你可以将每个路由组件都包装在lazy函数中: ```jsx const Home = lazy(() => import('./Home')); const About = lazy(() => import('./About')); ``` 在上述示例中,Home和About组件将在需要时按需加载。 4. 在你的路由配置中,将懒加载的组件包装在Suspense组件中: ```jsx import { BrowserRouter, Route, Switch } from 'react-router-dom'; const App = () => { return ( <BrowserRouter> <Suspense fallback={<div>Loading...</div>}> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> </Switch> </Suspense> </BrowserRouter> ); }; ``` 在上述示例中,fallback属性定义了在组件加载时显示的加载界面。 5. 最后,确保你的应用程序使用BrowserRouter包装根组件。这样可以使路由器在整个应用程序中起作用。 ```jsx import { BrowserRouter } from 'react-router-dom'; const RootApp = () => { return ( <BrowserRouter> <App /> </BrowserRouter> ); }; ``` 现在,当用户访问相应的路由时,React将自动按需加载路由组件。请注意,懒加载组件是异步加载的,因此在加载期间可能会显示加载界面或占位符。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田本初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值