React Router: Quản Lý Điều Hướng (Routing) Trong React

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 28 tháng 1, 2025

React Router là một thư viện mạnh mẽ giúp bạn xây dựng các ứng dụng React với khả năng điều hướng giữa các trang một cách dễ dàng và linh hoạt mà không cần tải lại toàn bộ trang web. Trong bài viết này, chúng ta sẽ tìm hiểu:

  1. React Router là gì?
  2. Cài đặt React Router
  3. Các thành phần chính trong React Router
  4. Ví dụ cơ bản với React Router
  5. Routing nâng cao

1. React Router là gì?

React Router là một thư viện định tuyến phổ biến trong React, cho phép bạn:

  • Xây dựng các ứng dụng Single Page Application (SPA).
  • Quản lý điều hướng giữa các trang mà không cần tải lại trình duyệt.
  • Hỗ trợ Dynamic Routing (định tuyến động).
  • Cho phép Nested Routes (định tuyến lồng nhau).
  • Xử lý các trường hợp 404 Not Found.

Hiện tại, phiên bản phổ biến nhất là React Router v6 với cú pháp rõ ràng và dễ hiểu hơn.

2. Cài đặt React Router

Để sử dụng React Router, bạn cần cài đặt gói thư viện:

npm install react-router-dom						

Nếu bạn dùng Yarn:

yarn add react-router-dom						

3. Các Thành Phần Chính Trong React Router

Thành phần Mô tả
BrowserRouter Cho phép sử dụng định tuyến thông qua URL.
Routes Bao bọc các Route.
Route Xác định đường dẫn URL và component tương ứng.
Link Thay thế thẻ <a> để điều hướng mà không tải lại trang.
NavLink Tương tự Link, nhưng hỗ trợ thêm class cho link đang active.
useNavigate Hook giúp điều hướng bằng mã JavaScript.
Outlet Hiển thị các route con trong cấu trúc nested route.

4. Ví Dụ Cơ Bản với React Router

Cấu Trúc Dự Án

/src  						
├── App.js  						
├── index.js  						
├── pages/  						
│   ├── Home.js  						
│   ├── About.js  						
│   ├── Contact.js  						
├── components/  						
│   ├── Navbar.js  						

1. Cấu Hình Router (App.js)

import React from "react";						
import { BrowserRouter, Routes, Route } from "react-router-dom";						
import Navbar from "./components/Navbar";						
import Home from "./pages/Home";						
import About from "./pages/About";						
import Contact from "./pages/Contact";						
							
function App() {						
	  return (						
	    <BrowserRouter>						
	      <Navbar />						
	      <Routes>						
	        <Route path="/" element={<Home />} />						
	        <Route path="/about" element={<About />} />						
	        <Route path="/contact" element={<Contact />} />						
	        <Route path="*" element={<h2>404 - Page Not Found</h2>} />						
	      </Routes>						
	    </BrowserRouter>						
	  );						
}						
							
export default App;						

2. Tạo Navbar (components/Navbar.js)

import React from "react";						
import { Link } from "react-router-dom";						
							
function Navbar() {						
	  return (						
	    <nav>						
	      <ul>						
	        <li><Link to="/">Home</Link></li>						
	        <li><Link to="/about">About</Link></li>						
	        <li><Link to="/contact">Contact</Link></li>						
	      </ul>						
	    </nav>						
	  );						
}						
							
export default Navbar;						

3. Tạo Các Trang Cơ Bản

pages/Home.js:

import React from "react";						
function Home() {						
	  return <h1>Welcome to the Home Page!</h1>;						
}						
export default Home;						

pages/About.js:

import React from "react";						
function About() {						
	  return <h1>About Us</h1>;						
}						
export default About;						

pages/Contact.js:

import React from "react";						
function Contact() {						
	  return <h1>Contact Us</h1>;						
}						
export default Contact;						

5. Routing Nâng Cao

5.1 Nested Routes (Định tuyến lồng nhau)

Bạn có thể sử dụng Outlet để hiển thị các route con:

<Route path="/dashboard" element={<Dashboard />}>						
	  <Route path="settings" element={<Settings />} />						
	  <Route path="profile" element={<Profile />} />						
</Route>						

Dashboard.js:

import React from "react";						
import { Outlet } from "react-router-dom";						
							
function Dashboard() {						
	  return (						
	    <div>						
	      <h1>Dashboard</h1>						
	      <Outlet />						
	    </div>						
	  );						
}						
export default Dashboard;						

5.2 useNavigate (Điều hướng bằng mã JavaScript)

import React from "react";						
import { useNavigate } from "react-router-dom";						
							
function Login() {						
	  const navigate = useNavigate();						
							
	  const handleLogin = () => {						
	    // Điều hướng sau khi login						
	    navigate("/dashboard");						
	  };						
							
	  return (						
	    <button onClick={handleLogin}>Login</button>						
	  );						
}						
export default Login;						

6. Tóm Tắt Kiến Thức

Khái niệm Mô tả
Routes Định nghĩa các đường dẫn trong ứng dụng.
Route Xác định mỗi trang tương ứng với một URL.
Link Tạo liên kết điều hướng mà không tải lại trang.
useNavigate Điều hướng bằng mã JavaScript.
Nested Routes Định tuyến lồng nhau trong cấu trúc Router.

7. Kết Luận

React Router là công cụ mạnh mẽ giúp bạn xây dựng ứng dụng SPA dễ dàng và hiệu quả. Bạn nên:

  • Nắm rõ các thành phần cơ bản như Routes, Route, Link.
  • Hiểu cách sử dụng useNavigate để điều hướng.
  • Áp dụngNested Routes để tổ chức cấu trúc ứng dụng rõ ràng.
Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ