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