“以前我写 HTML 是在砌墙,现在写 JSX 是在指挥整个施工队。”
—— 一个刚学会 React 的前端民工的深夜感慨
🌟 前言:你还在用 <div> 搬砖吗?
如果你是从 jQuery 或原生 JS 时代一路摸爬滚打过来的老兵,那你一定记得那种“DOM 操作如绣花,页面结构像蜘蛛网”的日子。HTML、CSS、JS 三兄弟各干各的,偶尔还要互相甩锅:“样式错位?肯定是你 JS 改错了 class!”、“按钮点不动?是不是 CSS 层叠盖住了?”
直到有一天,React 拿着一把叫 JSX 的魔法锤子出现了:
“别搬砖了,来当包工头吧!”
🧩 什么是 JSX?—— 在 JavaScript 里写 HTML 的“叛逆语法”
JSX(JavaScript XML)是 React 的“秘密武器”,它让你在 JS 代码里直接写类似 HTML 的结构。比如:
const element = <h1>Hello, React!</h1>;
看起来像 HTML?但它其实是 JS 的语法糖!React 内部会把它编译成:
const element = React.createElement('h1', null, 'Hello, React!');
所以,JSX 不是字符串,也不是模板引擎,而是 JavaScript 的扩展语法。它让 UI 描述变得直观、可读、可组合——就像用乐高积木搭房子,每一块都清晰可见。
💡 小知识:Vue 也有类似的
<template>,但 React 更“激进”——它直接把 UI 和逻辑揉在一起,用函数封装一切。
🏗️ 组件化:从“砌墙工人”升级为“建筑设计师”
在传统开发中,我们的单位是 <div>、<p>、.btn……
而在 React 世界里,组件才是基本单位。
看看这个例子:
function App() {
return (
<div>
<JuejinHeader />
<main>
<Articles />
<aside>
<Checkin />
<TopArticles />
</aside>
</main>
</div>
);
}
你看,整个页面被拆成了 JuejinHeader、Articles、Checkin 等独立组件。每个组件负责自己的 UI + 逻辑 + 样式,互不干扰。
这就像:
- 以前:你一个人既要砌墙、又要刷漆、还要装电线。
- 现在:你喊一声“Header 组上!Sidebar 组准备!”,大家各司其职,高效协作。
✅ 组件 = 函数
为什么组件是函数?因为 React 认为:UI = f(state) 。
输入状态(state),输出界面(JSX)。纯函数,无副作用,可预测,可测试——这才是现代前端工程化的起点。
🎭 JSX 的“小心机”:让逻辑与 UI 共舞
JSX 最迷人的地方,不是它长得像 HTML,而是它无缝融合了 JavaScript 的表达能力。
比如条件渲染:
{isLoggedIn ? <div>已登录</div> : <div>未登录</div>}
列表渲染:
{todos.map(todo => (
<li key={todo.id}>{todo.title}</li>
))}
甚至还能内联变量、调用函数、嵌套表达式……
你的 UI 不再是静态模板,而是一个“活”的程序输出。
⚠️ 注意:JSX 里不能用
class,得用className——因为class是 JS 关键字!React 连这种细节都替你想好了(虽然初学者常踩坑 😅)。
🔄 响应式魔法:useState 让 UI 自动“活”起来
光有 JSX 还不够,真正的魔法在于 状态驱动更新。
const [name, setName] = useState("vue");
setTimeout(() => setName("react"), 3000);
3 秒后,页面上的 vue 自动变成 react!
不需要手动操作 DOM,不需要 document.getElementById,React 自动帮你重新渲染相关部分。
这就是 响应式(Reactive) 的魅力:数据变了,UI 自动跟上。你只管管理状态,剩下的交给 React。
🧙♂️ 有人说:“React 把前端从‘命令式’带入了‘声明式’时代。”
你不再说“先找到元素,再改它的文本”,而是说:“当前名字是 name,就这样显示。”
🤔 为什么 React 入门门槛高?
- 它要求你理解 函数式思维(组件即函数)
- 它混合了 UI 与逻辑(不像 Vue 有清晰的
<template>/<script>/<style>分离) - 它推崇 不可变数据、纯函数、单向数据流 等概念
但一旦跨过这道坎,你会发现:代码更可维护、更易测试、更利于团队协作。
就像学开车,手动挡难上手,但掌控感更强。React 就是前端界的“手动挡超跑”。
🏁 结语:做自己的“包工头”
JSX 不只是语法糖,它是 React 组件化思想的载体。
它让我们从“写页面”升级为“设计系统”,从“操作 DOM”转向“管理状态”。
下次当你写:
<MyAwesomeButton onClick={handleClick} />
请记住:你不是在写一个按钮,你是在指挥一个具备完整生命周期、可复用、可测试的 UI 单元。
所以,别再搬砖了。
戴上安全帽,拿起蓝图,去做那个搭建数字世界的包工头吧!