- vừa được xem lúc

Tìm hiểu về React Router

0 0 28

Người đăng: Tran Nhat Minh

Theo Viblo Asia

React Router là một API cho các ứng dụng React. React router sử dụng định tuyến động phía máy khách cho phép xây dựng SPA (Single Page Application) với điều hướng mà không cần làm mới trang. Đây là một cách ngày càng phổ biến để mang lại trải nghiệm tốt hơn cho người dùng.

Sử dụng React Router

Cài đặt React Router:

npm i react-router-dom

Import các thành phần cần sử dụng

import { BrowserRouter as Router, Switch, Route, Link, Redirect } from "react-router-dom";

Ngoài ra, có thể đặt các bí danh cho các thành phần, như thành phần BrowserRouter có thế đặt bí danh Router, khi sử dụng sẽ chỉ cần gọi Router.

Các thành phần chính

Có 3 thành phần chính trong React Router:

  • Routes, như là <BrowserRouter><HashRouter>
  • Route Matchers, như là <Route><Switch>
  • Navigation, như là <Link>, <NavLink><Redirect>

1, Routers

Với dúng dụng web, react-router-dom cung cấp 2 component <BrowserRouter><HashRouter>. Khác biệt chính giữa 2 routers này là cách chúng lưu trữ URL và giao tiếp mới máy chủ.

  • <BrowserRouter> thường được sử dụng hơn, nó sử dụng History API có trong HTML5 để theo dõi lịch sử bộ định tuyến của bạn.
  • <HashRouter> lưu trữ vị trí hiện tại trong một phần hash của URL ( cụ thể là window.location.hash)

2, Route Matchers

Có 2 component là Switch và Route. When <Switch> được render, nó sẽ tìm kiếm trong những thành phần con <Route> và lấy <Route> đầu tiên khớp với path và bỏ qua tất cả những <Route> còn lại. Nếu không có <Route> nào khớp, <Switch> sẽ không render gì cả.

Ví dụ:

import React from "react";
import ReactDOM from "react-dom";
import { BrowserRouter as Router, Switch, Route
} from "react-router-dom"; function App() { return ( <div> <Switch> <Route path="/about"> <About /> </Route> <Route path="/contact/:id"> <Contact /> </Route> <Route path="/contact"> <AllContacts /> </Route> {/* If none of the previous routes render anything, this route acts as a fallback. Important: A route with path="/" will *always* match the URL because all URLs begin with a /. So that's why we put this one last of all */} <Route path="/"> <Home /> </Route> </Switch> </div> );
} ReactDOM.render( <Router> <App /> </Router>, document.getElementById("root")
);

Có một số lưu ý:

  • Luôn đặt route chi tiết lên trước. Như trong ví dụ trên,để có thế để có thể xem được các contact cá nhân phải đặt route có path="/contact/:id" lên trước, nếu đặt route path="/contact" lên trước khi vào các contact cá nhân sẽ render ra component <AllContacts>
  • <Route path="/"> luôn match URL, vì vậy luôn đặt Route này ở cuối Switch

3, Navigation

React Router cung cấp component <Link> để tạo nhiều đường dẫn trong ứng dụng. Khi bạn render <Link>, ở góc màn hình trang HTML sẽ xuất hiện đường dẫn

Ví dụ:

<Link to="/">Home</Link> => <a href="/">Home</a>

<NavLink> đặc biệt hơn <Link> là có thể tự style lại chính nó khi nó ở khớp với 1 URL.

Ví dụ:

<NavLink to="/react" activeClassName="hurray"> React
</NavLink>

Khi URL là "/react", component sẽ render: <a href="/react" class="hurray">React</a>

Khi muốn buộc điều hướng, bạn có thể sử dụng component <Redirect>

Ví dụ: <Redirect to="/login" />

Tham khảo

https://reactrouter.com/web/guides/primary-components

Bình luận

Bài viết tương tự

- vừa được xem lúc

Xây dựng một Single-page Application cơ bản với React Router DOM như thế nào ?

Mở đầu. Trong những website thông thường khi điều hướng từ page này sang page khác, chúng ta sẽ sử dụng thẻ <a> để làm điều đó, nhưng trong React JS thường được sử dụng để xây dựng nhữmg Single Page A

0 0 227

- vừa được xem lúc

Build React Admin Dashboard with Multiple Themes | React Admin Panel CSS | ReactJS

Build React Admin Dashboard with Multiple Themes | React Admin Panel CSS | ReactJS. . In this video, we will Build React Admin Dashboard with Multiple Themes. .

0 0 205

- vừa được xem lúc

React Ecommerce Web Shop | Part 01 - Homepage | ReactJS SASS

React Ecommerce Web Shop | Part 01 - Homepage | ReactJS SASS. . In this video, we will Build React Ecommerce Web Shop Homepage with SASS. .

0 0 427

- vừa được xem lúc

React Ecommerce Web Shop | Part 02 - Catalog and Product page| ReactJS SASS

React Ecommerce Web Shop | Part 02 - Catalog page and Product page| ReactJS SASS. . In this video, we will Build React Ecommerce Web Shop with SASS. .

0 0 118

- vừa được xem lúc

React Ecommerce Web Shop | Part 03 - Shopping cart | ReactJS SASS

React Ecommerce Web Shop | Part 03 - Shopping cart | ReactJS SASS. . In this video, we will Build React Ecommerce Web Shop with SASS. .

0 0 178

- vừa được xem lúc

React Draggable List Component | React Drag And Drop | ReactJS Tutorial

React Draggable List Component | React Drag And Drop | ReactJS Tutorial. . In this video, we will List Component with items that can be drag and drop. .

0 0 68