Bài 4: Cài đặt thư viện react-router-dom và cấu hình router cho dự án Reactjs

1. Cài đặt thư viện React-router-dom yarn add react-router-dom 2. Tạo một số trang tương ứng với các router: chúng ta sẽ tạo 3 pages: page Home: Không cần login vẫn có thể truy cập được ( pages/Home/index.tsx) page Profile: Cần login mới có thể truy cập được ( pages/Profile/index.tsx) page Login: Phục vụ cho

1. Cài đặt thư viện React-router-dom

yarn add react-router-dom

2. Tạo một số trang tương ứng với các router:

chúng ta sẽ tạo 3 pages:
page Home: Không cần login vẫn có thể truy cập được ( pages/Home/index.tsx)
page Profile: Cần login mới có thể truy cập được ( pages/Profile/index.tsx)
page Login: Phục vụ cho việc login ( pages/Login/index.tsx)
** Trong folder src tạo folder pages**

  • Tạo trang Home
function Home() {
    return <h2>Home page</h2>;
}

export default Home;
  • Tạo trang Profile
function Profile() {
    return <h2>Profile page</h2>;
}

export default Profile;
  • Tạo trang Login
function Login() {
    return <h2>Login page</h2>;
}

export default Login;

3. Cấu hình router và tạo privteRouter

** Trong folder src tạo folder routes và file index.ts**

import { Fragment } from 'react';
import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
import { publicRoutes, privateRoutes } from '~/routes';
// import { DefaultLayout } from '~/components/Layout';

function App() {
    const isLogin = false;
    return (
        <Router>
            <div className="App">
                <Routes>
                    {publicRoutes.map((route, index) => {
                        const Page = route.component;
                        // let Layout = DefaultLayout;

                        // if (route.layout) {
                        //     Layout = route.layout;
                        // } else if (route.layout === null) {
                        //     Layout = Fragment;
                        // }
                        return (
                            <Route
                                key={index}
                                path={route.path}
                                element={
                                    // <Layout>
                                    <Page />
                                    // </Layout>
                                }
                            />
                        );
                    })}
                    {privateRoutes.map((route, index) => {
                        const Page = route.component;
                        return (
                            <Route
                                key={index}
                                path={route.path}
                                element={!isLogin ? <Navigate to="/login" /> : <Page />}
                            />
                        );
                    })}
                </Routes>
            </div>
        </Router>
    );
}

export default App;

Nguồn: viblo.asia

Bài viết liên quan

9 Mẹo lập trình Web “ẩn mình” giúp tiết kiệm hàng giờ đồng hồ

Hầu hết các lập trình viên (kể cả những người giỏi) đều tốn thời gian x

Can GPT-4o Generate Images? All You Need to Know about GPT-4o-image

OpenAI‘s GPT-4o, introduced on March 25, 2025, has revolutionized the way we create visual con

Khi nào nên dùng main, section, article, header, footer, và aside trong HTML5

HTML5 đã giới thiệu các thẻ ngữ nghĩa giúp cấu trúc nội dung web một cách có

So sánh Webhook và API: Khi nào nên sử dụng?

Trong lĩnh vực công nghệ thông tin và phát triển phần mềm, Webhook và API là hai th