Jorgen's blog Jorgen's blog
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

jorgen

Love it, make mistakes, learn, keep grinding.
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 微信小程序学习记录
  • WebAssembly
  • Vue.js 从入门到实践:构建现代前端应用
  • React.js-从入门到精通-构建现代用户界面
  • React-从入门到精通-构建现代Web应用
  • React-从入门到精通-构建现代前端应用
  • React 开发指南:从入门到精通
  • React框架入门:构建现代用户界面
    • 前言
    • 为什么选择React?
      • 1. 组件化开发
      • 2. 虚拟DOM
      • 3. 丰富的生态系统
    • React基础概念
      • JSX语法
      • 组件与Props
      • 状态管理
    • 实战:构建一个简单的React应用
      • 1. 创建React应用
      • 2. 组件结构
      • 3. 实现TodoList组件
      • 4. 实现AddTodo组件
      • 5. 整合到App组件
    • React Hooks
      • useState Hook
      • useEffect Hook
    • 结语
  • TypeScript:为JavaScript添加类型安全
  • TypeScript在前端开发中的应用:从入门到实践
  • Vue.js 集成 TypeScript:构建类型安全的前端应用
  • Webpack从入门到实践:构建现代前端应用
  • 前端工程化:构建现代化开发流程
  • 前端工程化:构建高效、可维护的现代Web应用
  • 前端工程化:构建高效现代Web应用的艺术
  • 响应式设计:构建适配所有设备的现代Web应用
  • 前端状态管理:从Flux到现代解决方案
  • 前端性能优化-打造极速流畅的用户体验
  • 前端测试-构建可靠且高质量的用户界面
  • 前端安全防护-构建安全可靠的Web应用
  • 前端微前端架构-构建可扩展的大型前端应用
  • 前端数据可视化-打造直观易懂的数据呈现
  • 前端国际化-构建面向全球用户的多语言Web应用
  • 前端无障碍访问-构建包容性的Web体验
  • 前端组件化与组件库设计-构建可复用的高质量组件
  • 前端AI与机器学习集成:构建智能化用户界面
  • 前端架构设计模式-构建可扩展的现代Web应用
  • frontend
Jorgen
2023-11-15
目录

React框架入门:构建现代用户界面

# 前言

嗨,大家好!我是Jorgen。在我维护的技术博客中,已经介绍过Vue.js框架的强大之处(还记得那篇《Vue.js-从入门到实践-构建现代前端应用》吗?),但似乎忽略了一个同样重要的前端框架——React。🤦‍♂️

作为一名前端开发者,如果你只了解Vue而不知道React,那就像一个只会用右手写字的人一样,虽然能完成工作,但总是少了点什么。今天,就让我们一起走进React的世界,探索这个由Facebook(现在是Meta)开发的强大框架!

提示

React是用于构建用户界面的JavaScript库,由Facebook开发并在2013年开源。它采用组件化开发模式,使用虚拟DOM提高性能,是目前最流行的前端框架之一。

# 为什么选择React?

在开始学习React之前,我们得先明白为什么要学习它。毕竟,市面上已经有那么多前端框架了,为什么React能脱颖而出呢?

# 1. 组件化开发

React最核心的理念就是组件化开发。将UI拆分成独立、可复用的组件,每个组件管理自己的状态和渲染逻辑。

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}
1
2
3

这种开发方式让代码更加模块化,易于维护和扩展。🏗

# 2. 虚拟DOM

React使用虚拟DOM来优化性能。当状态发生变化时,React会比较虚拟DOM的差异,然后只更新实际DOM中需要变化的部分,而不是重新渲染整个页面。

这就像是在修改一份文档时,你不会重新打印整份文档,而是只修改需要更改的部分。💡

# 3. 丰富的生态系统

React拥有庞大的生态系统,包括:

  • React Router:用于处理路由
  • Redux:状态管理库
  • Material-UI:UI组件库
  • Next.js:服务端渲染框架

这些工具和库让React开发变得更加高效和便捷。📦

# React基础概念

让我们深入了解React的一些基础概念,这些是构建React应用的基础。

# JSX语法

JSX是React的语法扩展,它允许我们在JavaScript代码中编写类似HTML的标记。

const element = <h1 className="greeting">Hello, world!</h1>;
1

虽然看起来像HTML,但JSX实际上会被编译成JavaScript对象,最终渲染为真实的DOM元素。

THEOREM

JSX不是必须的,但使用JSX可以更直观地描述UI,提高代码的可读性。

# 组件与Props

React应用由组件构成。组件可以接收输入(称为props)并返回描述UI的React元素。

function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

const element = <Welcome name="Sara" />;
1
2
3
4
5

在这个例子中,Welcome是一个组件,name是传递给它的prop。

# 状态管理

每个组件都有自己的状态(state),状态改变会触发组件的重新渲染。

class Clock extends React.Component {
  constructor(props) {
    super(props);
    this.state = {date: new Date()};
  }

  componentDidMount() {
    this.timerID = setInterval(
      () => this.setState({date: new Date()}),
      1000
    );
  }

  componentWillUnmount() {
    clearInterval(this.timerID);
  }

  render() {
    return (
      <div>
        <h1>Hello, world!</h1>
        <h2>现在是 {this.state.date.toLocaleTimeString()}.</h2>
      </div>
    );
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 实战:构建一个简单的React应用

理论说再多不如动手实践。下面,我们一起来构建一个简单的待办事项(Todo List)应用。

# 1. 创建React应用

首先,我们需要创建一个新的React应用。最简单的方式是使用Create React App:

npx create-react-app todo-app
cd todo-app
npm start
1
2
3

这会创建一个基本的React应用,并在浏览器中自动打开。

# 2. 组件结构

我们的Todo应用将包含以下组件:

  • App:主组件,管理整体状态
  • TodoList:显示待办事项列表
  • TodoItem:单个待办事项
  • AddTodo:添加新待办事项的表单

# 3. 实现TodoList组件

让我们先实现TodoList组件:

import React from 'react';

function TodoList({ todos, toggleTodo }) {
  return (
    <ul>
      {todos.map(todo => (
        <TodoItem 
          key={todo.id} 
          todo={todo} 
          toggleTodo={toggleTodo} 
        />
      ))}
    </ul>
  );
}

function TodoItem({ todo, toggleTodo }) {
  return (
    <li>
      <input 
        type="checkbox" 
        checked={todo.completed} 
        onChange={() => toggleTodo(todo.id)} 
      />
      <span style={{ textDecoration: todo.completed ? 'line-through' : 'none' }}>
        {todo.text}
      </span>
    </li>
  );
}

export default TodoList;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 4. 实现AddTodo组件

接下来,我们实现添加新待办事项的表单:

import React, { useState } from 'react';

function AddTodo({ addTodo }) {
  const [text, setText] = useState('');

  const handleSubmit = e => {
    e.preventDefault();
    if (!text.trim()) return;
    addTodo(text);
    setText('');
  };

  return (
    <form onSubmit={handleSubmit}>
      <input 
        type="text" 
        value={text} 
        onChange={e => setText(e.target.value)} 
        placeholder="添加新待办事项"
      />
      <button type="submit">添加</button>
    </form>
  );
}

export default AddTodo;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 5. 整合到App组件

最后,我们将所有组件整合到App组件中:

import React, { useState } from 'react';
import AddTodo from './AddTodo';
import TodoList from './TodoList';
import './App.css';

function App() {
  const [todos, setTodos] = useState([
    { id: 1, text: '学习React', completed: false },
    { id: 2, text: '构建应用', completed: false },
    { id: 3, text: '部署上线', completed: false }
  ]);

  const addTodo = text => {
    const newTodo = {
      id: Date.now(),
      text,
      completed: false
    };
    setTodos([...todos, newTodo]);
  };

  const toggleTodo = id => {
    setTodos(todos.map(todo => 
      todo.id === id ? { ...todo, completed: !todo.completed } : todo
    ));
  };

  return (
    <div className="app">
      <h1>React待办事项</h1>
      <AddTodo addTodo={addTodo} />
      <TodoList todos={todos} toggleTodo={toggleTodo} />
    </div>
  );
}

export default App;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

# React Hooks

React Hooks是React 16.8引入的新特性,它允许你在函数组件中使用状态和其他React特性,而不必编写类组件。

# useState Hook

useState是最常用的Hook,用于在函数组件中添加状态:

import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>你点击了 {count} 次</p>
      <button onClick={() => setCount(count + 1)}>
        点击我
      </button>
    </div>
  );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# useEffect Hook

useEffect用于处理副作用,如数据获取、订阅或手动修改DOM:

import React, { useState, useEffect } from 'react';

function Example() {
  const [count, setCount] = useState(0);

  // 类似于componentDidMount和componentDidUpdate
  useEffect(() => {
    // 更新文档的标题
    document.title = `你点击了 ${count} 次`;
  });

  return (
    <div>
      <p>你点击了 {count} 次</p>
      <button onClick={() => setCount(count + 1)}>
        点击我
      </button>
    </div>
  );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 结语

通过这篇文章,我们初步了解了React的基本概念和用法。React以其组件化开发、虚拟DOM和丰富的生态系统成为了前端开发的重要工具。

React与Vue.js各有优势,选择哪个框架主要取决于项目需求和个人偏好。作为前端开发者,掌握多种框架会让你更加灵活地应对不同的开发场景。

"学习React不是终点,而是前端开发旅程中的一个重要里程碑。"

如果你对React感兴趣,可以继续深入学习以下主题:

  • React Router:处理应用路由
  • Redux:状态管理
  • React Testing Library:测试React应用
  • Next.js:React的服务端渲染框架

希望这篇文章对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言交流。😊

记住,技术学习是一个持续的过程,保持好奇心和学习的热情,你会在前端开发的道路上走得更远!

#React#JavaScript#前端框架
上次更新: 2026/01/28, 10:42:53
React 开发指南:从入门到精通
TypeScript:为JavaScript添加类型安全

← React 开发指南:从入门到精通 TypeScript:为JavaScript添加类型安全→

最近更新
01
LLM
01-30
02
intro
01-30
03
intro
01-30
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jorgen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式