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 基础
      • JSX 语法
      • 组件与 Props
      • State 与生命周期
    • React 进阶
      • Hooks 详解
      • 常用 Hooks
      • 条件渲染
      • 列表与 Key
    • React 生态系统
      • 状态管理
      • 路由管理
      • UI 组件库
    • React 最佳实践
      • 组件设计原则
      • 性能优化
      • 测试策略
    • 实战项目:待办事项应用
    • 总结
  • React 开发指南:从入门到精通
  • React框架入门:构建现代用户界面
  • TypeScript:为JavaScript添加类型安全
  • TypeScript在前端开发中的应用:从入门到实践
  • Vue.js 集成 TypeScript:构建类型安全的前端应用
  • Webpack从入门到实践:构建现代前端应用
  • 前端工程化:构建现代化开发流程
  • 前端工程化:构建高效、可维护的现代Web应用
  • 前端工程化:构建高效现代Web应用的艺术
  • 响应式设计:构建适配所有设备的现代Web应用
  • 前端状态管理:从Flux到现代解决方案
  • 前端性能优化-打造极速流畅的用户体验
  • 前端测试-构建可靠且高质量的用户界面
  • 前端安全防护-构建安全可靠的Web应用
  • 前端微前端架构-构建可扩展的大型前端应用
  • 前端数据可视化-打造直观易懂的数据呈现
  • 前端国际化-构建面向全球用户的多语言Web应用
  • 前端无障碍访问-构建包容性的Web体验
  • 前端组件化与组件库设计-构建可复用的高质量组件
  • 前端AI与机器学习集成:构建智能化用户界面
  • 前端架构设计模式-构建可扩展的现代Web应用
  • frontend
Jorgen
2023-11-15
目录

React-从入门到精通-构建现代前端应用

# 前言

在前端开发的世界里,框架的选择往往决定了开发效率和项目质量。之前我已经写了一篇关于 Vue.js 的文章,许多读者反馈希望也能了解一下 React 这个同样强大的前端框架。确实,React 和 Vue 是当前前端领域的两大巨头,各有千秋。🤔

作为一名前端开发者,掌握 React 已经成为必备技能之一。今天,我想和大家一起探索 React 的奇妙世界,从基础概念到高级应用,让我们一起构建现代化的前端应用!

# React 简介

React 是由 Facebook(现 Meta)开发并维护的一个用于构建用户界面的 JavaScript 库。它采用组件化的开发方式,通过虚拟 DOM 提高了渲染性能,是目前最受欢迎的前端框架之一。

提示

React 不仅仅是一个框架,它更是一种构建用户界面的思想和方法论。

# 为什么选择 React?

  1. 组件化开发:将 UI 拆分成独立、可复用的组件,使代码更加模块化。
  2. 虚拟 DOM:通过比较虚拟 DOM 的差异,最小化实际 DOM 操作,提高性能。
  3. 单向数据流:数据流向清晰,便于调试和维护。
  4. 丰富的生态系统:拥有庞大的社区和丰富的第三方库。

# React 基础

# JSX 语法

JSX 是 React 中用于描述 UI 的一种语法扩展,它看起来像 HTML,但实际上是 JavaScript。

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

THEOREM

JSX 最终会被 Babel 等工具转换为 React.createElement() 调用,因此它本质上还是 JavaScript。

# 组件与 Props

React 中有两种主要组件类型:函数组件和类组件。现代 React 开发中,我们更推荐使用函数组件。

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

// 类组件
class Welcome extends React.Component {
  render() {
    return <h1>Hello, {this.props.name}</h1>;
  }
}
1
2
3
4
5
6
7
8
9
10
11

Props(属性)是父组件向子组件传递数据的方式,它们是只读的。

# State 与生命周期

在函数组件中,我们可以使用 Hooks 来管理状态和副作用。

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

function Example() {
  // 声明一个新的 state 变量,我们称之为 "count"
  const [count, setCount] = useState(0);

  // 类似于 componentDidMount 和 componentDidUpdate
  useEffect(() => {
    // 使用浏览器的 API 更新文档标题
    document.title = `You clicked ${count} times`;
  });

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# React 进阶

# Hooks 详解

React Hooks 是 React 16.8 引入的新特性,它允许你在不编写 class 的情况下使用 state 以及其他 React 特性。

# 常用 Hooks

  1. useState:用于在函数组件中添加 state
  2. useEffect:处理副作用(数据获取、订阅或手动修改 DOM)
  3. useContext:订阅 React context
  4. useReducer:复杂 state 逻辑的替代方案
  5. useCallback:记忆化函数
  6. useMemo:记忆化计算结果
  7. useRef:创建可变引用
  8. useImperativeHandle:自定义暴露给父组件的实例值
  9. useLayoutEffect:DOM 更新前同步执行
  10. useDebugValue:在 React DevTools 中显示自定义 hook 标签

# 条件渲染

React 中有多种条件渲染的方式:

// 1. 使用 if 语句
function Greeting({ isLoggedIn }) {
  if (isLoggedIn) {
    return <UserGreeting />;
  }
  return <GuestGreeting />;
}

// 2. 使用三元运算符
function Greeting({ isLoggedIn }) {
  return isLoggedIn ? <UserGreeting /> : <GuestGreeting />;
}

// 3. 使用逻辑与运算符
function Mailbox({ unreadMessages }) {
  return (
    <div>
      <h1>Hello!</h1>
      {unreadMessages.length > 0 &&
        <h2>
          You have {unreadMessages.length} unread messages.
        </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

# 列表与 Key

在 React 中渲染列表时,每个元素都需要有一个唯一的 key 属性。

function NumberList({ numbers }) {
  const listItems = numbers.map((number) =>
    <li key={number.toString()}>
      {number}
    </li>
  );
  return (
    <ul>{listItems}</ul>
  );
}
1
2
3
4
5
6
7
8
9
10

# React 生态系统

# 状态管理

当应用变得复杂时,状态管理变得尤为重要。React 生态系统中有多种状态管理解决方案:

工具 特点 适用场景
React Context 内置,无需额外依赖 小型应用或组件间共享少量状态
Redux 单一数据源,可预测 大型应用,复杂状态逻辑
MobX 响应式编程 偏好响应式编程风格的项目
Zustand 简单,轻量 不想引入复杂状态管理的小中型项目

# 路由管理

React Router 是 React 应用中最流行的路由库:

import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom';

function App() {
  return (
    <Router>
      <nav>
        <Link to="/">首页</Link> | <Link to="/about">关于</Link>
      </nav>

      <Switch>
        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />
        <Route component={NoMatch} />
      </Switch>
    </Router>
  );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# UI 组件库

React 生态中有许多优秀的 UI 组件库:

  • Ant Design:企业级 UI 设计语言和 React UI 组件库
  • Material-UI:Google Material Design 的 React 实现
  • Chakra UI:简单、模块化且可访问的组件库
  • React Bootstrap:将 Bootstrap 组件转换为 React 组件
  • Semantic UI React:将 Semantic UI 与 React 集成

# React 最佳实践

# 组件设计原则

  1. 单一职责原则:每个组件应该只做一件事
  2. 组合优于继承:通过组合小型组件构建复杂 UI
  3. 保持组件纯净:尽量编写纯组件,减少副作用
  4. 合理拆分组件:根据功能点而非代码行数拆分组件

# 性能优化

  1. 使用 React.memo:避免不必要的重新渲染
  2. 使用 useMemo 和 useCallback:记忆化计算和函数
  3. 虚拟化长列表:使用 react-window 或 react-virtualized
  4. 代码分割:使用 React.lazy 和 Suspense 实现按需加载
const LazyComponent = React.lazy(() => import('./LazyComponent'));

function App() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <LazyComponent />
    </Suspense>
  );
}
1
2
3
4
5
6
7
8
9

# 测试策略

React 应用的测试通常包括:

  1. 单元测试:测试单个组件或函数
  2. 集成测试:测试组件间的交互
  3. 端到端测试:测试整个用户流程

常用的测试工具:

  • Jest:JavaScript 测试框架
  • React Testing Library:专门用于测试 React 组件
  • Cypress:端到端测试框架

# 实战项目:待办事项应用

让我们通过一个简单的待办事项应用来实践 React 的知识:

import React, { useState } from 'react';

function TodoApp() {
  // 状态管理
  const [todos, setTodos] = useState([]);
  const [inputValue, setInputValue] = useState('');

  // 添加新待办事项
  const addTodo = () => {
    if (inputValue.trim() !== '') {
      setTodos([...todos, { id: Date.now(), text: inputValue, completed: false }]);
      setInputValue('');
    }
  };

  // 切换待办事项状态
  const toggleTodo = (id) => {
    setTodos(
      todos.map(todo =>
        todo.id === id ? { ...todo, completed: !todo.completed } : todo
      )
    );
  };

  // 删除待办事项
  const deleteTodo = (id) => {
    setTodos(todos.filter(todo => todo.id !== id));
  };

  return (
    <div>
      <h1>待办事项列表</h1>
      <div>
        <input
          type="text"
          value={inputValue}
          onChange={(e) => setInputValue(e.target.value)}
          placeholder="添加新待办事项"
        />
        <button onClick={addTodo}>添加</button>
      </div>
      <ul>
        {todos.map(todo => (
          <li key={todo.id}>
            <input
              type="checkbox"
              checked={todo.completed}
              onChange={() => toggleTodo(todo.id)}
            />
            <span style={{ textDecoration: todo.completed ? 'line-through' : 'none' }}>
              {todo.text}
            </span>
            <button onClick={() => deleteTodo(todo.id)}>删除</button>
          </li>
        ))}
      </ul>
    </div>
  );
}

export default TodoApp;
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61

这个简单的应用展示了 React 的核心概念:组件、状态管理、事件处理和列表渲染。

# 总结

React 作为现代前端开发的重要工具,为我们构建高效、可维护的用户界面提供了强大的支持。从基础概念到高级应用,React 的生态系统不断成熟,为我们提供了丰富的解决方案。

通过本文的学习,我们了解了:

  • React 的核心概念和组件化思想
  • JSX 语法和组件的生命周期
  • Hooks 的使用和状态管理
  • React 生态系统的常用工具和库
  • React 应用的性能优化和测试策略

当然,React 的世界远不止这些,还有服务端渲染(Next.js)、移动端开发(React Native)等高级主题值得探索。希望这篇文章能够帮助你入门 React,并在你的前端开发旅程中提供一些参考。

记住,最好的学习方式是实践。尝试构建一些小项目,将学到的知识应用到实际中,你会发现 React 的魅力所在!🚀

"代码是写给人看的,顺便能在机器上运行。" —— Harold Abelson


如果你有任何问题或建议,欢迎在评论区留言交流!😊

#React#前端框架#JavaScript
上次更新: 2026/01/28, 10:42:53
React-从入门到精通-构建现代Web应用
React 开发指南:从入门到精通

← React-从入门到精通-构建现代Web应用 React 开发指南:从入门到精通→

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