从零开始,用 React 写出你的第一个网页应用

青山不改需求改
2026-01-17 13:29
阅读 654

大家好,我是一个干了五年后端开发的工程师。虽然我的日常工作是写 API、调数据库、搭微服务,但我一直觉得,懂一点前端,尤其是 React,对程序员的职业发展非常有帮助。无论是想转全栈、参与开源项目,还是在求职时多一份竞争力,React 都是一块敲门砖。

我当初学 React 的时候,被一堆术语吓到过:JSX、虚拟 DOM、状态管理……但后来发现,只要拆开一步步来,它其实没那么难。今天这篇教程,就是专门为完全零基础的朋友准备的。我会用最直白的语言,带你从安装环境到写出第一个能运行的 React 应用。全程不讲大道理,只讲你能马上上手的东西。

更重要的是,我们会把整个过程变成一个“小项目”——你不仅能学会 React,还能把它上传到 GitHub,成为你简历里亮眼的一笔。毕竟,在求职时,一个能跑的 GitHub 项目,比一百句“熟悉 React”都有说服力。


为什么选择 React?

React 是 Facebook(现 Meta)开发的一个 JavaScript 库,专门用来构建用户界面。你可以把它想象成“搭积木”:每个页面由很多小部件(比如按钮、列表、表单)组成,而 React 帮你把这些部件高效地组合起来,并且当数据变化时,自动更新页面。

它的优势在于:

  • 组件化:把 UI 拆成独立的小块,方便复用和维护
  • 生态强大:有大量工具、库和社区支持
  • 求职热门:几乎所有前端岗都要求会 React

第一步:搭建开发环境

别担心,现在搭建 React 环境比五年前简单多了。我们只需要两个工具:

  1. Node.js:让 JavaScript 能在电脑上运行(不只是浏览器里)
  2. npm 或 yarn:包管理工具,用来安装 React 和其他依赖

安装 Node.js

访问 https://nodejs.org,下载 LTS(长期支持)版本,一路默认安装即可。

安装完成后,打开终端(Windows 用 PowerShell 或 CMD,Mac 用 Terminal),输入:

node -v
npm -v

如果看到类似 v18.17.09.6.7 的版本号,说明安装成功!

💡 小提示:如果你用 Mac 且习惯用 Homebrew,也可以运行 brew install node

创建你的第一个 React 项目

React 官方提供了一个叫 Create React App(简称 CRA)的工具,它能一键生成项目骨架。运行以下命令:

npx create-react-app my-first-react-app

这会创建一个名为 my-first-react-app 的文件夹。耐心等几分钟,因为 npm 会下载很多依赖。

完成后,进入项目目录并启动开发服务器:

cd my-first-react-app
npm start

浏览器会自动打开 http://localhost:3000,看到一个旋转的 React Logo —— 恭喜!你已经跑起了第一个 React 应用。

⚠️ 常见问题:如果卡在 Installing packages,可以尝试换源(比如 npm config set registry https://registry.npmmirror.com)或使用 yarn 替代。


理解 React 的核心概念

别急着写代码,先搞懂三个关键概念,它们是 React 的“地基”。

1. 组件(Component):UI 的乐高积木

在 React 中,一切皆组件。一个按钮、一个导航栏、整个页面,都是组件。组件可以嵌套,比如 App 组件里包含 HeaderMain

每个组件就是一个 JavaScript 函数(或类),返回你想显示的 HTML 内容。

// 这是一个简单的函数组件
function Welcome() {
  return <h1>Hello, React!</h1>;
}

2. JSX:在 JS 里写 HTML

上面代码里的 <h1>Hello, React!</h1> 看起来像 HTML,但其实是 JSX —— 一种 JavaScript 的语法扩展。它让写 UI 更直观。

JSX 会被编译成普通的 JavaScript 函数调用,所以你可以在里面写逻辑:

function Greeting({ name }) {
  return <p>你好,{name}!</p>; // {} 里可以放 JS 表达式
}

3. 状态(State):让页面“活”起来

静态页面很无聊。我们要让页面能响应用户操作(比如点击按钮)。这就需要 状态

React 提供了 useState 钩子(Hook)来管理状态:

import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0); // 声明一个状态变量

  return (
    <div>
      <p>你点击了 {count} 次</p>
      <button onClick={() => setCount(count + 1)}>
        点我加一
      </button>
    </div>
  );
}

useState(0) 返回一个数组:当前值(count)和修改它的函数(setCount)。每次调用 setCount,React 会自动重新渲染组件。


实战:做一个“待办事项”小应用

光看不练假把式。现在,我们动手做一个极简的 Todo List 应用。它包含:

  • 输入框:添加新任务
  • 列表:显示所有任务
  • 删除按钮:移除某项任务

这个项目虽小,但涵盖了 React 的核心用法。

步骤 1:清理默认代码

打开 src/App.js,删掉所有内容,替换成:

import './App.css';

function App() {
  return (
    <div className="App">
      <h1>我的待办事项</h1>
    </div>
  );
}

export default App;

同时,清空 src/App.css,只保留:

.App {
  max-width: 600px;
  margin: 50px auto;
  padding: 20px;
}

步骤 2:添加状态和输入框

我们需要两个状态:

  • todos:任务列表(数组)
  • inputValue:输入框的当前内容
import { useState } from 'react';
import './App.css';

function App() {
  const [todos, setTodos] = useState([]);
  const [inputValue, setInputValue] = useState('');

  const handleAddTodo = () => {
    if (inputValue.trim()) {
      setTodos([...todos, inputValue]); // 添加新任务
      setInputValue(''); // 清空输入框
    }
  };

  return (
    <div className="App">
      <h1>我的待办事项</h1>
      <input
        type="text"
        value={inputValue}
        onChange={(e) => setInputValue(e.target.value)}
        placeholder="输入新任务"
      />
      <button onClick={handleAddTodo}>添加</button>
      <ul>
        {todos.map((todo, index) => (
          <li key={index}>{todo}</li>
        ))}
      </ul>
    </div>
  );
}

export default App;

🔍 关键点解释:

  • value={inputValue}:让输入框受控(内容由 state 决定)
  • onChange:监听输入变化,实时更新 inputValue
  • key={index}:React 需要唯一 key 来高效更新列表

步骤 3:添加删除功能

给每个任务加一个“删除”按钮:

// 在 map 里修改 li
<li key={index}>
  {todo}
  <button onClick={() => {
    const newTodos = todos.filter((_, i) => i !== index);
    setTodos(newTodos);
  }}>
    删除
  </button>
</li>

完整代码如下:

import { useState } from 'react';
import './App.css';

function App() {
  const [todos, setTodos] = useState([]);
  const [inputValue, setInputValue] = useState('');

  const handleAddTodo = () => {
    if (inputValue.trim()) {
      setTodos([...todos, inputValue]);
      setInputValue('');
    }
  };

  const handleDelete = (index) => {
    const newTodos = todos.filter((_, i) => i !== index);
    setTodos(newTodos);
  };

  return (
    <div className="App">
      <h1>我的待办事项</h1>
      <input
        type="text"
        value={inputValue}
        onChange={(e) => setInputValue(e.target.value)}
        placeholder="输入新任务"
        onKeyPress={(e) => e.key === 'Enter' && handleAddTodo()}
      />
      <button onClick={handleAddTodo}>添加</button>
      <ul>
        {todos.map((todo, index) => (
          <li key={index}>
            {todo}
            <button onClick={() => handleDelete(index)}>删除</button>
          </li>
        ))}
      </ul>
    </div>
  );
}

export default App;

我还加了一个小功能:按回车也能添加任务(onKeyPress)。

现在,保存文件,浏览器会自动刷新。试试添加和删除任务吧!


把项目推送到 GitHub

做完项目,别让它躺在本地。上传到 GitHub 是展示能力的最佳方式,尤其在求职时。

步骤:

  1. GitHub 创建一个新仓库(比如叫 my-first-react-todo
  2. 在项目根目录执行:
git init
git add .
git commit -m "feat: initial todo app"
git branch -M main
git remote add origin https://github.com/你的用户名/my-first-react-todo.git
git push -u origin main

💡 如果你还没配置 Git,先运行:

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

上传成功后,你的 GitHub 主页就会多一个项目。面试时,直接说:“我有个 React 项目,地址是……”,立刻加分!


新手常见问题解答

Q1:为什么用 useState 而不用普通变量?

A:普通变量变了,React 不知道,不会重新渲染页面。useState 会通知 React:“数据变了,快更新 UI!”

Q2:key 为什么重要?能用 index 吗?

A:key 帮助 React 识别哪些元素变了、加了、删了。用 index列表顺序不变时没问题,但如果支持拖拽排序,就该用唯一 ID(比如数据库主键)。

Q3:项目太大,App.js 写不下了怎么办?

A:拆组件!比如把 TodoListTodoItem 提成单独文件。组件化是 React 的核心思想。

Q4:怎么部署这个应用?

A:用 npm run build 生成静态文件,然后用 Vercel、Netlify 或 GitHub Pages 免费部署。一行命令就能上线!


下一步学习建议

恭喜你,已经跨过了 React 最难的门槛!接下来,我建议你:

  1. 深入理解 Hook:除了 useState,还有 useEffect(处理副作用,如请求数据)、useContext 等。
  2. 学习路由:用 react-router-dom 实现多页面跳转。
  3. 尝试状态管理:小型项目用 useState 足够,大型项目可学 Redux 或 Zustand。
  4. 做更多小项目:天气应用、记账本、博客首页……实践是最好的老师。

🛑 避坑指南:

  • 不要一上来就学 Redux,先掌握 React 本身
  • 不要死磕文档,边做边查更高效
  • 不要怕犯错,所有开发者都是从 bug 里爬出来的

结语:工具、项目、求职,三位一体

写这篇教程,是因为我深知新手最需要的不是理论,而是“能跑起来”的信心。你今天完成的这个 Todo 应用,虽然简单,但它代表了你迈出了第一步。

记住:GitHub 上的项目 > 简历上的“了解 React”。企业更看重你能否产出实际成果。哪怕只是一个小应用,只要代码清晰、功能完整,就能在求职中脱颖而出。

工具帮你提高效率,项目证明你的能力,而 React,正是连接这两者的桥梁。

现在,去你的终端,敲下 npx create-react-app 吧。你的第一个 React 应用,正在等你唤醒。

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝