Explorar el Código

chore: implement react-router-dom for routing

satnaing hace 2 años
padre
commit
532e767f35
Se han modificado 6 ficheros con 66 adiciones y 3 borrados
  1. 1 0
      package.json
  2. 31 0
      pnpm-lock.yaml
  3. 3 0
      src/components/loader.tsx
  4. 13 3
      src/main.tsx
  5. 3 0
      src/pages/dashboard/index.tsx
  6. 15 0
      src/router.tsx

+ 1 - 0
package.json

@@ -17,6 +17,7 @@
     "clsx": "^2.1.0",
     "react": "^18.2.0",
     "react-dom": "^18.2.0",
+    "react-router-dom": "^6.21.3",
     "tailwind-merge": "^2.2.1",
     "tailwindcss-animate": "^1.0.7"
   },

+ 31 - 0
pnpm-lock.yaml

@@ -20,6 +20,9 @@ dependencies:
   react-dom:
     specifier: ^18.2.0
     version: 18.2.0(react@18.2.0)
+  react-router-dom:
+    specifier: ^6.21.3
+    version: 6.21.3(react-dom@18.2.0)(react@18.2.0)
   tailwind-merge:
     specifier: ^2.2.1
     version: 2.2.1
@@ -427,6 +430,11 @@ packages:
       react: 18.2.0
     dev: false
 
+  /@remix-run/router@1.14.2:
+    resolution: {integrity: sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg==}
+    engines: {node: '>=14.0.0'}
+    dev: false
+
   /@rollup/rollup-android-arm-eabi@4.9.6:
     resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==}
     cpu: [arm]
@@ -1802,6 +1810,29 @@ packages:
       scheduler: 0.23.0
     dev: false
 
+  /react-router-dom@6.21.3(react-dom@18.2.0)(react@18.2.0):
+    resolution: {integrity: sha512-kNzubk7n4YHSrErzjLK72j0B5i969GsuCGazRl3G6j1zqZBLjuSlYBdVdkDOgzGdPIffUOc9nmgiadTEVoq91g==}
+    engines: {node: '>=14.0.0'}
+    peerDependencies:
+      react: '>=16.8'
+      react-dom: '>=16.8'
+    dependencies:
+      '@remix-run/router': 1.14.2
+      react: 18.2.0
+      react-dom: 18.2.0(react@18.2.0)
+      react-router: 6.21.3(react@18.2.0)
+    dev: false
+
+  /react-router@6.21.3(react@18.2.0):
+    resolution: {integrity: sha512-a0H638ZXULv1OdkmiK6s6itNhoy33ywxmUFT/xtSoVyf9VnC7n7+VT4LjVzdIHSaF5TIh9ylUgxMXksHTgGrKg==}
+    engines: {node: '>=14.0.0'}
+    peerDependencies:
+      react: '>=16.8'
+    dependencies:
+      '@remix-run/router': 1.14.2
+      react: 18.2.0
+    dev: false
+
   /react@18.2.0:
     resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
     engines: {node: '>=0.10.0'}

+ 3 - 0
src/components/loader.tsx

@@ -0,0 +1,3 @@
+export default function Loader() {
+  return <span>loader</span>
+}

+ 13 - 3
src/main.tsx

@@ -1,10 +1,20 @@
 import React from 'react'
 import ReactDOM from 'react-dom/client'
-import App from './App.tsx'
+import {
+  Route,
+  RouterProvider,
+  createBrowserRouter,
+  createRoutesFromElements,
+} from 'react-router-dom'
+import Router from './router'
 import './index.css'
 
+const router = createBrowserRouter(
+  createRoutesFromElements(<Route path='/*' element={<Router />} />)
+)
+
 ReactDOM.createRoot(document.getElementById('root')!).render(
   <React.StrictMode>
-    <App />
-  </React.StrictMode>,
+    <RouterProvider router={router} />
+  </React.StrictMode>
 )

+ 3 - 0
src/pages/dashboard/index.tsx

@@ -0,0 +1,3 @@
+export default function Dashboard() {
+  return <span>Dashboard</span>
+}

+ 15 - 0
src/router.tsx

@@ -0,0 +1,15 @@
+import { Suspense, lazy } from 'react'
+import { Route, Routes } from 'react-router-dom'
+import Loader from '@/components/loader'
+
+const Dashboard = lazy(() => import('@/pages/dashboard'))
+
+export default function Router() {
+  return (
+    <Suspense fallback={<Loader />}>
+      <Routes>
+        <Route path='/' element={<Dashboard />} />
+      </Routes>
+    </Suspense>
+  )
+}