Ở bài trước, chúng ta đã định nghĩa cấu trúc trang bằng cách xây dựng DefaultLayout. Trong bài này, chúng ta sẽ sử dụng DefaultLayout cho trang Home và To-do. Sau đó, dùng reactjs route để khai báo các đường link giúp điều hướng cho người sử dụng.
Bài trước: ReactJS Bài 2: Tạo Layout giao diện cho ứng dụng
Tạo trang Home
Bước đầu tiên, bạn hãy tạo thư mục src/screens vằ đặt file Home.js với nội dung như dưới đây:
import React, { Component } from 'react';
import DefaultLayout from '../layouts/DefaultLayout';
class Home extends Component {
constructor(props) {
super(props);
this.state = {
};
}
render() {
return (
<DefaultLayout title="Home">
<h3>Welcome to my-reactjs app!</h3>
</DefaultLayout>
);
}
}
export default Home;
Trang Home (hay chính là component Home) sử dụng component DefaultLayout và truyền vào các giá trị title và toàn bộ các thẻ và nội dung con (children).
Thêm component Home vào src/App.js:
...
import Home from './screens/Home'; // thêm import
function App() {
return (
<div className="container">
<Home /> <!-- thêm component home để hiển thị mặc định khi vào app -->
</div>
);
}
export default App;
npm start nếu bạn vẫn chưa chạy trước đó. Vào trình duyệt và bạn sẽ thấy nội dung của app như sau:Tạo trang To-do
Ở bài này, chúng ta sẽ tạo 1 trang To-do đơn giản. Ở các bài sau, chúng ta sẽ học cách lấy dữ liệu từ server backend, hiển thị các to-do, và cách tạo các to-do mới.
Tạo TodoList.js trong thư mục src/screens với đoạn code sau:
import React from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
function TodoList() {
return (
<div>
<h1>Todo List</h1>
<ul>
<li>Task 1</li>
<li>Task 2</li>
<li>Task 3</li>
</ul>
<button className="btn btn-primary">Add Task</button>
</div>
);
}
export default TodoList;
Hiện tại, bạn sẽ thấy là không có cách nào để truy nhập vào trang To-do. Đó là vì chúng ta phải khai báo các đường dẫn của ứng dụng trước đã. Chúng ta sẽ thực hiện việc này bằng các sử dụng Route của ReactJS
Khai báo điều hướng với ReactJS Route
Để ứng dụng điều Huớng người sử dụng tới đúng screens mà chúng ta đã tạo, chúng ta cần khai báo đường dẫn tới mỗi screen/component đó. Trong ReactJS, chúng ta có thể sử dụng các component của router dom.
Trong ứng dụng này, bạn phải chú ý là chúng ta sẽ dùng phiên bản 6+ của router dom. Cài đặt router dom bằng câu lệnh sau trên terminal:
npm i react-router-dom@6.6.1
Hiện tại, ứng dụng của chúng ta chỉ có 2 route: trang Home, và trang To-do. Mở file index.js ở thư mục gốc của dự án vào thay thế đoạn code hiện tại với đoạn code sau:
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import reportWebVitals from './reportWebVitals';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Home from './screens/Home';
import TodoList from './screens/TodoList';
//import App from './App';
const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/home" element={<Home />} />
<Route path="/to-do" element={<TodoList />} />
</Routes>
</BrowserRouter>
);
reportWebVitals();
Chú ý, các đường link / và to-do đã được khai báo ở component MenuBar ở bài trước.
- Đoạn code trên định nghĩa các route trong ứng dụng và cách thức chuyển hướng đến các route đó.
- Trong đoạn code trên, có 2 route là ‘/’ và ‘/to-do’.
- Khi người dùng truy cập vào ‘/’, nội dung của component Home trong
src/screens/Homesẽ được hiển thị. - Khi người dùng truy cập vào ‘/to-do’, nội dung của component TodoList trong
src/screens/TodoListsẽ được hiển thị. - Cuối cùng, phần nội dung của route hiện tại sẽ được hiển thị trong thẻ có id ‘root’ trong trang html.
Học thêm về ReactJS Router Dom
Bạn có thể tham khảo tại đây.
Bài tiếp theo
Áp dụng 1 layout khác cho màn hình đăng nhập: ReactJS Bài 4: Login layout và xử lý đăng nhập
