React入门教程:从安装到第一个应用

吴思远
2025-06-20 02:13
阅读 351

开篇:React是什么?

开篇:React是什么?

你可能听说过“React”这个词,它是一个很流行的前端开发工具。那React到底是干什么的呢?简单来说,React 是由Facebook推出的一个用于构建用户界面(也就是网页上你能看到和操作的部分)的 JavaScript 库。

你可以把 React 想象成一个帮你快速搭建网页界面的积木套装。它最大的特点是“组件化”,也就是说我们可以把整个网页分成一个个小块来开发,就像搭积木一样,一块一块地拼起来。这样写出来的代码更容易理解和维护,也更适合团队合作。

使用 React,你可以做出动态交互的网站,比如社交网络、电商平台,甚至是企业内部系统等等。

在本篇教程中,我们将从头开始,一步一步搭建环境,理解核心概念,并完成一个简单的React应用。即使你没有任何编程经验,也能轻松上手!


环境准备:一步步搭建React开发环境

环境准备:一步步搭建React开发环境

第一步:安装 Node.js 和 npm

React 项目通常依赖于 Node.js 和它的包管理器 npm。这两个工具不是 React 自带的,所以我们需要先安装它们。

  1. 打开浏览器,访问 https://nodejs.org
  2. 点击下载“LTS”版本(稳定版本)
  3. 安装过程中一路点击“下一步”即可
  4. 安装完成后,在命令行(Windows是CMD或PowerShell,Mac是Terminal)输入以下命令查看是否安装成功:
node -v
npm -v

如果出现类似 v18.x.x 的版本号,说明安装成功。


第二步:创建第一个React项目

我们使用 Facebook 提供的工具 create-react-app 来创建 React 项目。这个工具会自动配置好所有必要的开发环境,非常适合初学者。

  1. 在命令行输入以下命令来安装 create-react-app
npx create-react-app my-first-app

注意:这里的 my-first-app 是你项目的文件夹名称,可以改成你喜欢的名字,比如 react-demo

  1. 安装完成后进入项目目录:
cd my-first-app
  1. 启动开发服务器:
npm start

几秒钟后,浏览器会自动打开一个页面,显示React默认的欢迎界面:

🎉 Welcome to React!

你现在就可以看到你的第一个React应用运行起来了!接下来我们会慢慢了解它是怎么工作的。


小贴士:关于目录结构

进入你的项目文件夹后,你会看到几个主要的文件和文件夹:

  • public/:放一些静态资源(如HTML文件、图标等)
  • src/:这是你的代码所在的位置,非常重要
  • package.json:存放项目信息和依赖项
  • README.md:说明文档

我们现在重点来看 src/index.jssrc/App.js 这两个文件,因为它们是我们写代码的主要地方。


核心概念:用最简单的方式理解React

核心概念:用最简单的方式理解React

为了帮助你更好地理解React的工作方式,我们来介绍一下几个最基础的概念:

1. 组件 (Component)

React 中最重要的思想就是“组件”。你可以把一个页面拆成多个小模块,每一个模块就是一个组件。

举个例子:如果你在做一个博客网站,你可能会有一个“标题栏”组件、一个“文章列表”组件,还有一个“评论框”组件。

React 组件就像是积木,你可以组合它们来构建整个网页。

// App.js
function App() {
  return (
    <div>
      <h1>你好,React!</h1>
      <p>这是我的第一个组件</p>
    </div>
  );
}
export default App;

上面这段代码定义了一个叫 App 的组件,返回了一段 HTML 结构(技术上叫 JSX)。这就是React组件的样子。


2. JSX:像HTML一样的语法

你可能注意到了,我们在写组件时用了 <div><h1> 这样的标签,这看起来像是 HTML,其实这是 React 使用的一种扩展语法 —— JSX。

JSX 允许你在 JavaScript 中直接写类似 HTML 的结构,这样写组件就更直观了。

例如:

<p>这是一个段落</p>

虽然它看起来像HTML,但本质上还是JavaScript。React最后会将这些结构转换成实际的DOM元素显示在网页上。


3. 状态 (State) 和 props

状态(State)和props(属性)是让组件“动”起来的关键。

Props(传递数据)

你可以把 props 想象成组件之间通信的“信件”。父组件可以把数据通过 props 传给子组件。

例如:

// ParentComponent.js
function ParentComponent() {
  return <ChildComponent name="张三" />
}

function ChildComponent(props) {
  return <p>欢迎你,{props.name}</p>
}

结果就是显示:欢迎你,张三


State(组件自身的状态)

State 是组件自己控制的数据。当state改变时,React会自动更新页面。

比如我们可以做一个按钮,点击一下数字加一:

import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);
  
  return (
    <div>
      <p>你点击了 {count} 次</p>
      <button onClick={() => setCount(count + 1)}>点击我</button>
    </div>
  )
}

export default Counter;

这里我们用了 React 提供的 useState 函数来声明一个状态变量 count,并用 setCount 来修改它。每当我们点击按钮,count 就会加1,并且页面也会自动更新。


4. 生命周期(简要介绍)

生命周期是指一个组件从出生(挂载)到消失(卸载)的过程。在这个过程中,我们可以执行一些特定的操作,比如加载数据、清理资源等。

目前你只需要知道一个钩子函数:

useEffect(() => {
  console.log("组件加载完成");
}, []);

useEffect 是 React 提供的一个 Hook 函数,常用来处理副作用(比如请求数据、设置定时器等)。这个内容后续还会深入讲解。


实战项目:跟着做第一个React应用 —— 待办事项清单

现在我们来动手写一个简单的React应用:待办事项清单。它可以添加任务,显示任务,并删除已完成的任务。

第一步:创建项目结构

确保你已经按照前面的方法创建好了项目。我们现在要修改 App.js 文件,来实现功能。

// App.js
import React, { useState } from 'react';
import './App.css'; // 默认样式文件

function App() {
  const [tasks, setTasks] = useState([]);       // 存储所有任务
  const [inputValue, setInputValue] = useState(""); // 输入框内容

  // 添加任务
  const addTask = () => {
    if(inputValue.trim()) {
      setTasks([...tasks, inputValue]);
      setInputValue("");
    }
  };

  // 删除任务
  const deleteTask = (index) => {
    const newTasks = tasks.filter((task, i) => i !== index);
    setTasks(newTasks);
  }

  return (
    <div className="App">
      <h1>我的待办事项</h1>
      
      {/* 输入框和按钮 */}
      <div>
        <input 
          value={inputValue} 
          onChange={(e) => setInputValue(e.target.value)} 
          placeholder="输入新任务..."
        />
        <button onClick={addTask}>添加</button>
      </div>

      {/* 显示任务列表 */}
      <ul>
        {tasks.map((task, index) => (
          <li key={index}>
            {task}
            <button onClick={() => deleteTask(index)}>删除</button>
          </li>
        ))}
      </ul>
    </div>
  );
}


![现代网页界面设计示例-1](https://code-guide.oss.shanghai.autogptai.club/common/file/download?name=date2025062002/61a2994e-25e1-4aec-a210-ff86c6936bd6.jpg)


export default App;

第二步:美化一下界面(可选)

你可以在 App.css 文件中添加一些基本样式让页面更好看:

.App {
  max-width: 500px;
  margin: 50px auto;
  padding: 20px;
  border: 1px solid #ddd;
  border-radius: 8px;
  font-family: sans-serif;
}

input {
  padding: 10px;
  width: 70%;
  margin-right: 10px;
}

button {
  padding: 10px;
}

ul {
  list-style: none;
  padding-left: 0;
}

li {
  margin-top: 10px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background-color: #f9f9f9;
  padding: 10px;
  border-radius: 4px;
}

li button {
  color: red;
}

第三步:测试你的应用

保存文件后,如果你之前运行过 npm start,应该能直接在浏览器里看到效果:

  • 在输入框中输入任务内容
  • 点击“添加”按钮,任务会出现在下方列表中
  • 点击“删除”按钮,该任务会被移除

恭喜你完成了第一个完整的React应用!


常见问题解答

以下是很多新手学习React时常见的问题,看看有没有你也遇到的困惑吧:


问题1:为什么React要用JSX?

:JSX 是为了让开发者更容易编写 UI 组件。你可以把它理解为一种“混合语言”,把 HTML 和 JS 写在一起。它最终会被编译成标准的JavaScript,这样浏览器才能认识。


问题2:组件必须以大写字母开头吗?

:是的。在React中,组件名必须以大写字母开头,否则会被当作普通 HTML 标签(如 div、span)处理。

正确写法:<MyComponent />
错误写法:<mycomponent />


问题3:我写的组件没有显示出来怎么办?

:检查以下几点:

  1. 是否在 App.js 中调用了这个组件
  2. 是否导出并导入正确(特别是多文件的情况下)
  3. 浏览器控制台是否有报错信息

问题4:什么是“Hooks”?为什么要学它?

:Hooks 是 React 16.8 版本之后引入的新特性,让你可以在不写类组件的情况下使用状态和其他 React 功能。最常见的 Hooks 包括 useStateuseEffect,它们让函数组件具备更多的能力。


问题5:React是不是比原生HTML/CSS/JS难很多?

:一开始会觉得复杂,因为它涉及很多新概念。但一旦熟悉了React的开发模式,你会发现它反而更高效,逻辑更清晰,特别是在开发大型项目时优势明显。


下一步学习建议:继续深入React世界

恭喜你完成了React的第一个学习阶段!现在你知道了如何搭建环境、写了第一个组件、了解了核心概念,并做出了一个实用的小应用。

下一步你可以尝试学习以下内容:

✅ 推荐学习路径

阶段 学习内容 目标
初级 组件通信、表单处理、条件渲染 能独立完成小型交互式页面
中级 React Router、Axios请求、Redux状态管理 构建完整SPA应用,连接后台API
高级 TypeScript + React、性能优化、单元测试 开发高质量、可维护的企业级应用

📚 推荐资源

  • 官方文档React官方文档(中文)
  • 练习平台:CodeSandbox、LeetCode、Frontend Mentor
  • 视频课程:B站、慕课网、Udemy 上的React课程
  • 书籍推荐:《React入门实战(第2版)》、《React设计模式与最佳实践》

💡 温馨提示

学习任何新技术都会遇到困难,React也不例外。不要害怕犯错,也不必追求一次掌握全部内容。只要坚持每天进步一点点,很快你就能写出复杂的React应用啦!


希望这篇教程能帮助你顺利迈入React的世界。如果你有任何疑问,欢迎留言交流。祝你学习愉快,早日成为优秀的前端开发者!🌟

评论 0

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