React入门教程:从安装到第一个应用——一个被创业公司“优化”过的前端的自白
去年十月,北京开始降温。那天晚上十一点半,我坐在天通苑租住的小单间里,窗外是京承高速上呼啸而过的货车声,屋里只有 MacBook 风扇嗡嗡作响。刚刷完脉脉上又一条“某大厂裁员”的帖子,心里咯噔一下——这不是新闻,是我的日常。
就在三天前,我所在的那家 SaaS 初创公司,烧完了 B 轮融资的最后一分钱,老板在全员会上红着眼眶说:“很抱歉,我们撑不下去了。”会议室里一片死寂,有人低头抹眼泪,有人默默收拾东西。我抱着显示器走出写字楼时,寒风一吹,突然意识到:下个月房租 3500 还没着落,信用卡账单还有八千多。
那会儿我其实不算新手——工作三年,做过 Vue、jQuery、甚至写过原生 JS 拼命兼容 IE11。但面试官问起 React,我只能支支吾吾说“用过一点点”。HR 直接摇头:“现在北京的中高级前端岗,90% 要求 React,你这简历……竞争力不够啊。”
那一刻,我站在国贸地铁口,看着玻璃幕墙反射出自己疲惫的脸,心想:完了,是不是该转行送外卖了?
转机:别让技术债压垮你的求职路
但人总得活下去。回家路上,我在地铁上刷到一篇 GPT-4o 的演示视频——它不仅能理解代码上下文,还能生成带安全防护的嵌入式(Embedding)组件。我突然意识到:时代变了,React 不再是“可选项”,而是“生存线”。
我咬牙花 199 块买了个在线课程,还把老婆珍藏的 Switch 卖了换了一台内存 32G 的 Mac Mini(她说:“你要是再找不到工作,咱俩就回老家开奶茶店。”我说:“好,但先让我把 React 学明白。”)。
于是,从 零开始学 React,成了我失业后每天雷打不动的任务。今天这篇教程,不是什么高深理论,而是我这个“被优化过的人”踩坑、试错、最终靠 React 找到新工作的实战笔记。希望对你有用,尤其如果你也正站在求职的悬崖边上。
第一步:环境搭建——别被 node_modules 劝退
很多人卡在第一步:装环境。别慌,我就在这栽过跟头。
去年十一月初的一个周六早上,我照着网上教程 npm install -g create-react-app,结果终端报错:
Error: EACCES: permission denied
我当时差点砸键盘。后来才知道是因为 macOS 权限问题。解决方案?别用 root,改用 nvm 管理 Node 版本。
真实操作步骤(亲测有效):
- 安装 nvm(Node Version Manager):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - 重启终端,安装 LTS 版本 Node(推荐 18.x):
nvm install --lts nvm use --lts - 再次创建项目(别用 CRA 了,官方已弃用):
npm create vite@latest my-first-react-app -- --template react cd my-first-react-app npm install npm run dev
看到 localhost:5173 弹出那个旋转的 Vite logo 时,我激动得差点叫出声——这是我失业以来第一次感觉自己“还能行”。
💡 安全提示:永远不要用
sudo npm install!这会埋下权限漏洞。用 nvm 或者 pnpm 更安全。
第二步:理解 React 的核心思想——组件化不是炫技
我之前以为 React 就是写 JSX、用 Hooks。错了。React 的本质是“用函数构建 UI”。
举个例子:我第一份作业是做个 TodoList。以前我会直接操作 DOM,比如:
document.getElementById('list').innerHTML += `<li>${task}</li>`;
但在 React 里,你得这么想:
- 整个页面是一个函数
- 数据变化 → 函数重新执行 → UI 自动更新
所以我的 TodoList 是这样写的:
import { useState } from 'react';
export default function TodoApp() {
const [tasks, setTasks] = useState([]);
const [input, setInput] = useState('');
const addTask = () => {
if (input.trim()) {
setTasks([...tasks, { id: Date.now(), text: input }]);
setInput('');
}
};
return (
<div>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="输入任务"
/>
<button onClick={addTask}>添加</button>
<ul>
{tasks.map(task => (
<li key={task.id}>{task.text}</li>
))}
</ul>
</div>
);
}
这段代码看起来简单,但背后是状态驱动视图的思维转变。我当时在天通苑的出租屋里反复调试,直到凌晨三点,终于理解了 useState 不是魔法,而是 React 在帮你管理“什么时候该重绘”。
⚠️ 安全意识提醒:永远不要把用户输入直接渲染成 HTML!上面代码用
{task.text}是安全的,因为 React 默认会转义。但如果你用dangerouslySetInnerHTML,就可能引入 XSS 攻击——千万别为了“方便”牺牲安全。
第三步:Embedding —— 把外部内容安全地嵌进来
说到 Embedding,很多人第一反应是“嵌个 YouTube 视频不就完事了?”但真实项目里,Embedding 往往是安全漏洞的重灾区。
我在面试一家做教育 SaaS 的公司时,被问到:“如果我们要嵌入第三方课件(比如 PDF 或互动 H5),你怎么保证安全?”
我当时答得磕磕巴巴。后来研究发现,React 社区有成熟方案:
用 iframe + sandbox 属性:
<iframe src="https://trusted-third-party.com/widget" sandbox="allow-scripts allow-same-origin" title="安全嵌入内容" />sandbox能限制 iframe 的权限,比如禁止弹窗、禁止表单提交。对 URL 做白名单校验:
const allowedDomains = ['example.com', 'trusted-cdn.net']; const isValidUrl = (url) => { try { const domain = new URL(url).hostname; return allowedDomains.includes(domain); } catch { return false; } };配合 CSP(内容安全策略):在
index.html的<meta>里加上:<meta http-equiv="Content-Security-Policy" content="frame-src 'self' https://trusted-third-party.com;">
这些细节,HR 不会问,但技术面一定会考。安全不是加分项,是底线。
第四步:GPT-4o 如何帮我加速学习?但别当“代码搬运工”
说实话,我用了 GPT-4o(通过 Cursor 编辑器集成),但它不是“万能答案机”。
比如我想实现一个“防抖搜索框”,我不会直接说:“给我写个 React 防抖组件”。而是这样问:
“在 React 中,如何用 useEffect 和 useRef 实现一个防抖的搜索输入框?要求:输入停止 500ms 后才触发 API 调用,并且要处理组件卸载时的清理,避免内存泄漏。”
GPT-4o 给出了带 cleanup 的代码:
useEffect(() => {
const handler = setTimeout(() => {
if (searchTerm) {
fetchData(searchTerm);
}
}, 500);
return () => clearTimeout(handler); // 关键!防止组件卸载后还调用
}, [searchTerm]);
但我会手动验证每一行:为什么用 useRef 而不是 useState 存 timer?因为 setState 会触发重渲染,而 ref 不会。
🧠 忠告:AI 是副驾驶,不是司机。盲目复制代码,面试一问原理就露馅。我见过太多人简历写“精通 React”,结果连 useEffect 的依赖数组都说不清。
求职:React 成了我的救命稻草
今年二月,我投了第 37 份简历,终于拿到 offer——月薪从之前的 18k 涨到 24k,公司做 AI 工具链,技术栈清一色 React + TypeScript。
面试官问我:“你 React 学了多久?”
我说:“三个月。前两个月在天通苑啃文档,后一个月用 React 重写了我之前公司的核心模块——虽然公司没了,但代码还在 GitHub 上。”
他笑了:“我们就需要这种能从废墟里重建的人。”
写给同样迷茫的你
如果你也在焦虑:
- 被裁了不敢告诉家人
- 投了上百份简历石沉大海
- 看着别人晒 offer 自己却连初面都进不去
我想说:技术不会背叛你,只要你肯沉下心学。
React 入门不难,难的是理解背后的工程思维和安全意识。别追求“速成”,去理解每一个 useEffect 背后的调度机制,每一个 key prop 的 diff 算法意义。
我在天通苑的墙上贴了一张纸,写着:
“每天写 100 行有效代码,胜过刷 10 小时面经。”
现在,这张纸还在。只不过旁边多了张新公司的工牌。
最后的小建议
- 从 Vite 开始,别碰 CRA(Create React App 已归档)
- 优先学函数组件 + Hooks,类组件基本淘汰了
- 安全第一:XSS、CSRF、CSP 这些词至少要知道含义
- 动手做项目:哪怕是个天气小应用,也比抄教程强
- 善用 AI,但保持怀疑:GPT-4o 能提速,不能替你思考
我知道北京的冬天很冷,天通苑的房租也不便宜。但只要你愿意打开终端,敲下 npm create vite@latest,你就已经走在了重建的路上。
共勉。
—— 一个曾被创业公司“优化”、如今靠 React 站稳脚跟的前端开发者
2024年6月于北京天通苑

评论 0