</>
⌕
Junior #jsx#fundamentals

JSX là gì và được biên dịch ra sao?

⚡ Trả lời nhanh

JSX là cú pháp mở rộng của JavaScript, không phải HTML. Compiler (Babel/SWC/TypeScript) biến mỗi thẻ JSX thành lời gọi hàm tạo element: `React.createElement` (cũ) hoặc `jsx()` từ `react/jsx-runtime` (React 17+ không cần import React).

JSX chỉ là cú pháp; trình duyệt không hiểu nó nên phải được biên dịch trước khi chạy.

// Bạn viết
const el = <h1 className="title">Xin chào, {name}</h1>;

// Cũ (classic runtime)
React.createElement("h1", { className: "title" }, "Xin chào, ", name);

// Mới (automatic runtime, React 17+)
import { jsx as _jsx } from "react/jsx-runtime";
_jsx("h1", { className: "title", children: ["Xin chào, ", name] });

Kết quả là một plain object mô tả UI (React element), không phải DOM node.

JSXKhác HTML
className, htmlForthay cho class, for
camelCase attribute/eventonClick, tabIndex
Phải có một rootdùng Fragment <>...</>
Thẻ phải đóng<img />, <input />
🃏 Ôn bằng flashcard