Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
React là thư viện JavaScript để xây dựng giao diện người dùng, do một công ty công nghệ lớn phát triển và hiện được dùng rộng rãi. Ý tưởng cốt lõi rất đơn giản: chia giao diện thành các thành phần (component) nhỏ, mỗi component nhận dữ liệu vào và trả về giao diện tương ứng.
Cách phổ biến hiện nay là dùng Vite để tạo nhanh một dự án React:
npm create vite@latest hoc-react -- --template react
cd hoc-react
npm install
npm run devLệnh cuối khởi động máy chủ phát triển, thường ở cổng 5173, tự nạp lại trang mỗi khi bạn lưu file. Bạn cần cài sẵn Node.js.
JSX là cú pháp trông giống HTML nhưng nằm trong JavaScript, được công cụ build chuyển thành lời gọi hàm. Một vài khác biệt so với HTML thuần:
className thay vì class, và htmlFor thay vì for.onClick.<img /> và <input />.<>...</> (fragment) để bọc nhiều phần tử.function LoiChao() {
const ten = 'Lan';
return (
<div className='loi-chao'>
<h2>Xin chào, {ten}!</h2>
<p>Hôm nay là {new Date().toLocaleDateString('vi-VN')}</p>
</div>
);
}
export default LoiChao;Tên component bắt buộc viết hoa chữ cái đầu để React phân biệt với thẻ HTML thường. Bạn dùng nó như một thẻ: <LoiChao />.
Props (properties) là đối số của component, truyền từ cha xuống con:
function TheKhoaHoc({ ten, giaoVien, gia, mienPhi = false }) {
return (
<article className='the'>
<h3>{ten}</h3>
<p>Giảng viên: {giaoVien}</p>
<strong>{mienPhi ? 'Miễn phí' : gia.toLocaleString('vi-VN') + ' đ'}</strong>
</article>
);
}
function App() {
return (
<div>
<TheKhoaHoc ten='HTML cơ bản' giaoVien='Nam' gia={200000} />
<TheKhoaHoc ten='Nhập môn lập trình' giaoVien='Mai' gia={0} mienPhi />
</div>
);
}Chuỗi truyền trong dấu nháy, còn số, boolean, mảng hay object truyền trong ngoặc nhọn. Quy tắc quan trọng: props chỉ đọc. Component không được sửa props của mình, dữ liệu chảy một chiều từ cha xuống con.
function Khung({ tieuDe, children }) {
return (
<section>
<h2>{tieuDe}</h2>
{children}
</section>
);
}
// sử dụng
<Khung tieuDe='Giới thiệu'>
<p>Nội dung bên trong khung.</p>
</Khung>Prop đặc biệt children cho phép bạn tạo các component bố cục như khung, thẻ, hộp thoại có thể chứa bất kỳ nội dung nào.
{dangTai && <p>Đang tải...</p>}
{loi ? <p>Có lỗi</p> : <DanhSach />}
<ul>
{khoaHoc.map(k => (
<li key={k.id}>{k.ten}</li>
))}
</ul>Khi render danh sách bằng map, mỗi phần tử cần thuộc tính key duy nhất và ổn định, thường là id từ dữ liệu, để React cập nhật hiệu quả.
Hãy xem cách các mảnh ghép nối với nhau thành trang danh sách khóa học nhỏ, với dữ liệu nằm ở component cha và được chuyển xuống qua props:
const DU_LIEU = [
{ id: 1, ten: 'HTML cơ bản', giaoVien: 'Nam', gia: 200000 },
{ id: 2, ten: 'CSS thực chiến', giaoVien: 'Mai', gia: 300000 },
{ id: 3, ten: 'React nhập môn', giaoVien: 'Lan', gia: 0 },
];
function App() {
return (
<main>
<h1>Khóa học nổi bật</h1>
<div className='luoi'>
{DU_LIEU.map(k => (
<TheKhoaHoc
key={k.id}
ten={k.ten}
giaoVien={k.giaoVien}
gia={k.gia}
mienPhi={k.gia === 0}
/>
))}
</div>
</main>
);
}Chú ý vài điểm: dữ liệu là mảng thông thường, mỗi phần tử biến thành một component nhờ map; thuộc tính key lấy từ id; và toàn bộ trang được mô tả khai báo, bạn không viết lệnh nào để tạo hay chèn phần tử DOM. Đây chính là điểm khác biệt lớn nhất so với cách làm thủ công bằng createElement.
Khi dự án có nhiều component, mỗi component nên nằm trong file riêng, đặt tên file trùng tên component, ví dụ TheKhoaHoc.jsx. Bạn có thể gom các file liên quan vào thư mục components. Đừng cầu kỳ quá sớm: hãy bắt đầu đơn giản, tách file khi thấy một file bắt đầu dài hoặc một component được dùng ở nhiều nơi.
Bạn đã nắm JSX, component, props, children, hiển thị có điều kiện và danh sách. Bước tiếp theo là cho component có trạng thái riêng bằng Hook useState, sẽ làm giao diện thay đổi theo tương tác của người dùng.
Nếu muốn xây dựng ứng dụng React hoàn chỉnh theo từng bước, hãy xem thêm các khóa học trên codebem.com.
Nguyễn Đình Cường
0 comment