From e1f21f312cefde4e3a896ad82a129f9caea8a99f Mon Sep 17 00:00:00 2001 From: wizardforcel Date: Thu, 16 May 2024 13:35:28 +0800 Subject: [PATCH] 2024-05-16 13:35:26 --- docs/bg-react/SUMMARY.md | 8 +- docs/bg-react/bg-react_0.md | 116 ++- docs/bg-react/bg-react_0.yaml | 328 -------- docs/bg-react/bg-react_1.md | 450 +++++++++- docs/bg-react/bg-react_1.yaml | 1164 -------------------------- docs/bg-react/bg-react_2.md | 843 ++++++++++++++++++- docs/bg-react/bg-react_2.yaml | 1338 ------------------------------ docs/bg-react/bg-react_3.md | 812 +++++++++++++++++- docs/bg-react/bg-react_3.yaml | 1447 --------------------------------- 9 files changed, 2221 insertions(+), 4285 deletions(-) delete mode 100644 docs/bg-react/bg-react_0.yaml delete mode 100644 docs/bg-react/bg-react_1.yaml delete mode 100644 docs/bg-react/bg-react_2.yaml delete mode 100644 docs/bg-react/bg-react_3.yaml diff --git a/docs/bg-react/SUMMARY.md b/docs/bg-react/SUMMARY.md index 55865ff..3edbd69 100644 --- a/docs/bg-react/SUMMARY.md +++ b/docs/bg-react/SUMMARY.md @@ -1,4 +1,4 @@ -+ [第一章](bg-react_0.md) -+ [第二章](bg-react_1.md) -+ [第三章](bg-react_2.md) -+ [第四章](bg-react_3.md) \ No newline at end of file ++ [前言](bg-react_0.md) ++ [第一章:介绍 React 和用户界面设计](bg-react_1.md) ++ [第二章:创建组件](bg-react_2.md) ++ [第三章:管理用户交互性](bg-react_3.md) \ No newline at end of file diff --git a/docs/bg-react/bg-react_0.md b/docs/bg-react/bg-react_0.md index fb4fcfc..39b6db2 100644 --- a/docs/bg-react/bg-react_0.md +++ b/docs/bg-react/bg-react_0.md @@ -1,2 +1,116 @@ -# 第一章 +# 前言 +诸如 Angular 和 React 之类的项目正在迅速改变开发团队构建和部署 Web 应用程序到生产环境的方式。在本书中,你将学习到使用 React 入门所需的基础知识,并应对现实世界的项目和挑战。本书包含了在开发过程中考虑关键用户需求的实用指导,并展示了如何处理高级概念,如状态管理、数据绑定、路由以及流行的 JSX 组件标记。完成本书中的示例后,你将发现自己已经准备好转向实际的个人或专业前端项目。 + +完成本书后,你将能够: + ++ 理解 React 如何在更广泛的应用程序堆栈中工作 + ++ 分析如何将标准界面分解为特定组件 + ++ 成功创建你自己的越来越复杂的 React 组件,无论是使用 HTML 还是 JSX + ++ 正确处理多个用户事件及其对整体应用程序状态的影响 + ++ 理解组件生命周期以优化应用程序的用户体验 + ++ 配置路由以允许通过你的组件进行轻松、直观的导航 + +# 本书适合的读者 + +如果你是一名前端开发者,希望在 JavaScript 中创建真正反应式的用户界面,那么这本书适合你。对于 React,你需要在 JavaScript 语言的基本要素方面有坚实的基础,包括 ES2015 中引入的新 OOP 特性。假设你了解 HTML 和 CSS,并且对 Node.js 有基本了解,这在管理开发工作流程的上下文中将是有用的,但不是必需的。 + +# 本书涵盖的内容 + +第一章,*介绍 React 和 UI 设计*,介绍 React 并帮助我们开始构建基于 React 的应用程序的基本基础设施。然后,我们将分析如何设计用户界面,以便它可以轻松映射到 React 组件。 + +第二章,*创建组件*,教我们如何实现 React 组件,如何将多个组件组合成一个,以及如何管理它们的内部状态。我们将通过构建一个简单的应用程序来探索 React 组件的实现。 + +第三章,*管理用户交互*,教我们如何管理用户与基于 React 的用户界面组件交互产生的事件。我们将探索在 React 组件生命周期中触发的事件,并学习如何利用它们来创建高效的组件。 + +# 充分利用本书 + +本书将需要具有以下最低硬件要求的系统: + ++ 处理器:Pentium 4(或同等产品) + ++ 4 GB RAM + ++ 硬盘空间:10 GB + ++ 互联网连接 + +以下软件也应该安装: + ++ 任何现代操作系统(最好是 Windows 10 版本 1507) + ++ 最新版本的 Node.js([`nodejs.org/en/`](https://nodejs.org/en/)) + ++ 任何现代浏览器的最新版本(最好是 Chrome) + +# 下载示例代码文件 + +您可以从[www.packtpub.com](http://www.packtpub.com)上的帐户下载本书的示例代码文件。如果您在其他地方购买了本书,可以访问[www.packtpub.com/support](http://www.packtpub.com/support)并注册,以便将文件直接发送到您的邮箱。 + +您可以按照以下步骤下载代码文件: + +1. 登录或注册于[www.packtpub.com](http://www.packtpub.com/support)。 + +1. 选择支持选项卡。 + +1. 点击代码下载与勘误。 + +1. 在搜索框中输入书名,并按照屏幕上的指示操作。 + +下载文件后,请确保使用最新版本的以下软件解压缩或提取文件夹: + ++ 适用于 Windows 的 WinRAR/7-Zip + ++ 适用于 Mac 的 Zipeg/iZip/UnRarX + ++ 适用于 Linux 的 7-Zip/PeaZip + +本书的代码包也托管在 GitHub 上,地址为[`github.com/TrainingByPackt/Beginning-React`](https://github.com/TrainingByPackt/Beginning-React)。如果有代码更新,将会在现有的 GitHub 仓库中更新。 + +我们还有来自丰富图书和视频目录的其他代码包,可在**[`github.com/PacktPublishing/`](https://github.com/PacktPublishing/)**上查看。去看看吧! + +# 下载彩色图像 + +我们还提供了一个包含本书中使用的截图/图表的彩色图像的 PDF 文件。您可以在此处下载:[`www.packtpub.com/sites/default/files/downloads/BeginningReact_ColorImages.pdf`](https://www.packtpub.com/sites/default/files/downloads/BeginningReact_ColorImages.pdf)。 + +# 使用的约定 + +本书中使用了多种文本约定。 + +`CodeInText`:表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。例如:“通过包装`App`组件,`BrowserRouter`组件为其赋予了路由功能。” + +代码块设置如下: + +```jsx +class Catalog extends React.Component { + constructor() { + super(); +``` + +当我们希望引起您对代码块特定部分的注意时,相关行或项目以粗体显示: + +```jsx +import { BrowserRouter } from 'react-router-dom' +ReactDOM.render( + + + + , document.getElementById('root')); +``` + +任何命令行输入或输出都以下列方式书写: + +```jsx +create-react-app --version +``` + +**粗体**:表示新术语、重要单词或屏幕上看到的单词。例如,菜单或对话框中的单词以这种方式出现在文本中。例如:“现在我们需要创建一个视图来显示**目录**组件或**关于**页面。” + +**活动**:这些是基于场景的活动,将让您在完整的部分过程中实际应用所学知识。它们通常是在现实世界问题或情况的背景下。 + +警告或重要提示以这种方式出现。 diff --git a/docs/bg-react/bg-react_0.yaml b/docs/bg-react/bg-react_0.yaml deleted file mode 100644 index 1841b3c..0000000 --- a/docs/bg-react/bg-react_0.yaml +++ /dev/null @@ -1,328 +0,0 @@ -- en: Preface - id: totrans-0 - prefs: - - PREF_H1 - type: TYPE_NORMAL - zh: 前言 -- en: Projects like Angular and React are rapidly changing how development teams build - and deploy web applications to production. In this book, you'll learn the basics - you need to get up and running with React and tackle real-world projects and challenges. - The book includes helpful guidance on how to consider key user requirements within - the development process, and also shows you how to work with advanced concepts - such as state management, data-binding, routing, and the popular component markup - that is JSX. As you complete the included examples you'll find yourself well-equipped - to move onto a real-world personal or professional frontend project. - id: totrans-1 - prefs: [] - type: TYPE_NORMAL - zh: 诸如Angular和React之类的项目正在迅速改变开发团队构建和部署Web应用程序到生产环境的方式。在本书中,你将学习到使用React入门所需的基础知识,并应对现实世界的项目和挑战。本书包含了在开发过程中考虑关键用户需求的实用指导,并展示了如何处理高级概念,如状态管理、数据绑定、路由以及流行的JSX组件标记。完成本书中的示例后,你将发现自己已经准备好转向实际的个人或专业前端项目。 -- en: 'After completing this book, you will be able to:' - id: totrans-2 - prefs: [] - type: TYPE_NORMAL - zh: 完成本书后,你将能够: -- en: Understand how React works within a wider application stack - id: totrans-3 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 理解React如何在更广泛的应用程序堆栈中工作 -- en: Analyze how you can break down a standard interface into specific components - id: totrans-4 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 分析如何将标准界面分解为特定组件 -- en: Successfully create your own increasingly complex React components with HTML - or JSX - id: totrans-5 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 成功创建你自己的越来越复杂的React组件,无论是使用HTML还是JSX -- en: Correctly handle multiple user events and their impact on overall application - state - id: totrans-6 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 正确处理多个用户事件及其对整体应用程序状态的影响 -- en: Understand the component lifecycle to optimize the UX of your application - id: totrans-7 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 理解组件生命周期以优化应用程序的用户体验 -- en: Configure routing to allow effortless, intuitive navigation through your components - id: totrans-8 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 配置路由以允许通过你的组件进行轻松、直观的导航 -- en: Who This Book Is For - id: totrans-9 - prefs: - - PREF_H1 - type: TYPE_NORMAL - zh: 本书适合的读者 -- en: If you are a frontend developer who wants to create truly reactive user interfaces - in JavaScript, then this the book for you. For React, you'll need a solid foundation - in the essentials of the JavaScript language, including new OOP features that - were introduced in ES2015\. An understanding of HTML and CSS is assumed, and a - basic knowledge of Node.js will be useful in the context of managing a development - workflow, but is not essential. - id: totrans-10 - prefs: [] - type: TYPE_NORMAL - zh: 如果你是一名前端开发者,希望在JavaScript中创建真正反应式的用户界面,那么这本书适合你。对于React,你需要在JavaScript语言的基本要素方面有坚实的基础,包括ES2015中引入的新OOP特性。假设你了解HTML和CSS,并且对Node.js有基本了解,这在管理开发工作流程的上下文中将是有用的,但不是必需的。 -- en: What This Book Covers - id: totrans-11 - prefs: - - PREF_H1 - type: TYPE_NORMAL - zh: 本书涵盖的内容 -- en: '[Chapter 1](6eb91088-46e5-46ee-b44e-8452f3bd61e4.xhtml), *Introducing React and - UI Design*, introduces React and helps us to start building the basic infrastructure - of a React-based application. Then, we will analyze how to design a user interface - so that it can be easily mapped to React components.' - id: totrans-12 - prefs: [] - type: TYPE_NORMAL - zh: '[第1章](6eb91088-46e5-46ee-b44e-8452f3bd61e4.xhtml),*介绍React和UI设计*,介绍React并帮助我们开始构建基于React的应用程序的基本基础设施。然后,我们将分析如何设计用户界面,以便它可以轻松映射到React组件。' -- en: '[Chapter 2](f4bfb4d0-18d6-4769-9bd4-c047c4a84651.xhtml), *Creating Components*, teaches - us how to implement React components, how to assemble multiple components into - one, and how to manage their internal states. We will explore React component - implementation by building a simple application.' - id: totrans-13 - prefs: [] - type: TYPE_NORMAL - zh: '[第2章](f4bfb4d0-18d6-4769-9bd4-c047c4a84651.xhtml),*创建组件*,教我们如何实现React组件,如何将多个组件组合成一个,以及如何管理它们的内部状态。我们将通过构建一个简单的应用程序来探索React组件的实现。' -- en: '[Chapter 3](e40f7b50-96a4-4f53-bb1d-39ca8c567995.xhtml), *Managing User Interactivity*, teaches - us how to manage the events generated by a user''s interaction with the components - of a React-based user interface. We will explore the events that are triggered - during the lifecycle of a React component, and will learn how to exploit them - in order to create efficient components.' - id: totrans-14 - prefs: [] - type: TYPE_NORMAL - zh: '[第3章](e40f7b50-96a4-4f53-bb1d-39ca8c567995.xhtml),*管理用户交互*,教我们如何管理用户与基于React的用户界面组件交互产生的事件。我们将探索在React组件生命周期中触发的事件,并学习如何利用它们来创建高效的组件。' -- en: To Get the Most out of This Book - id: totrans-15 - prefs: - - PREF_H1 - type: TYPE_NORMAL - zh: 充分利用本书 -- en: 'This book will require a system with the following minimum hardware requirements:' - id: totrans-16 - prefs: [] - type: TYPE_NORMAL - zh: 本书将需要具有以下最低硬件要求的系统: -- en: 'Processor: Pentium 4 (or equivalent)' - id: totrans-17 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 处理器:Pentium 4(或同等产品) -- en: 4 GB RAM - id: totrans-18 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 4 GB RAM -- en: 'Hard disk space: 10 GB' - id: totrans-19 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 硬盘空间:10 GB -- en: An internet connection - id: totrans-20 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 互联网连接 -- en: 'The following software should also be installed:' - id: totrans-21 - prefs: [] - type: TYPE_NORMAL - zh: 以下软件也应该安装: -- en: Any modern operating system (preferably, Windows 10 version 1507) - id: totrans-22 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 任何现代操作系统(最好是Windows 10版本1507) -- en: The latest version of Node.js ([https://nodejs.org/en/](https://nodejs.org/en/)) - id: totrans-23 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 最新版本的Node.js([https://nodejs.org/en/](https://nodejs.org/en/)) -- en: The latest version of any modern browser (preferably, Chrome) - id: totrans-24 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 任何现代浏览器的最新版本(最好是Chrome) -- en: Download the Example Code Files - id: totrans-25 - prefs: - - PREF_H1 - type: TYPE_NORMAL - zh: 下载示例代码文件 -- en: You can download the example code files for this book from your account at [www.packtpub.com](http://www.packtpub.com). - If you purchased this book elsewhere, you can visit [www.packtpub.com/support](http://www.packtpub.com/support) - and register to have the files emailed directly to you. - id: totrans-26 - prefs: [] - type: TYPE_NORMAL - zh: 您可以从[www.packtpub.com](http://www.packtpub.com)上的帐户下载本书的示例代码文件。如果您在其他地方购买了本书,可以访问[www.packtpub.com/support](http://www.packtpub.com/support)并注册,以便将文件直接发送到您的邮箱。 -- en: 'You can download the code files by following these steps:' - id: totrans-27 - prefs: [] - type: TYPE_NORMAL - zh: 您可以按照以下步骤下载代码文件: -- en: Log in or register at [www.packtpub.com](http://www.packtpub.com/support). - id: totrans-28 - prefs: - - PREF_OL - type: TYPE_NORMAL - zh: 登录或注册于[www.packtpub.com](http://www.packtpub.com/support)。 -- en: Select the SUPPORT tab. - id: totrans-29 - prefs: - - PREF_OL - type: TYPE_NORMAL - zh: 选择支持选项卡。 -- en: Click on Code Downloads & Errata. - id: totrans-30 - prefs: - - PREF_OL - type: TYPE_NORMAL - zh: 点击代码下载与勘误。 -- en: Enter the name of the book in the Search box and follow the onscreen instructions. - id: totrans-31 - prefs: - - PREF_OL - type: TYPE_NORMAL - zh: 在搜索框中输入书名,并按照屏幕上的指示操作。 -- en: 'Once the file is downloaded, please make sure that you unzip or extract the - folder using the latest version of:' - id: totrans-32 - prefs: [] - type: TYPE_NORMAL - zh: 下载文件后,请确保使用最新版本的以下软件解压缩或提取文件夹: -- en: WinRAR/7-Zip for Windows - id: totrans-33 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 适用于Windows的WinRAR/7-Zip -- en: Zipeg/iZip/UnRarX for Mac - id: totrans-34 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 适用于Mac的Zipeg/iZip/UnRarX -- en: 7-Zip/PeaZip for Linux - id: totrans-35 - prefs: - - PREF_UL - type: TYPE_NORMAL - zh: 适用于Linux的7-Zip/PeaZip -- en: The code bundle for the book is also hosted on GitHub at [https://github.com/TrainingByPackt/Beginning-React](https://github.com/TrainingByPackt/Beginning-React). In - case there's an update to the code, it will be updated on the existing GitHub - repository. - id: totrans-36 - prefs: [] - type: TYPE_NORMAL - zh: 本书的代码包也托管在GitHub上,地址为[https://github.com/TrainingByPackt/Beginning-React](https://github.com/TrainingByPackt/Beginning-React)。如果有代码更新,将会在现有的GitHub仓库中更新。 -- en: We also have other code bundles from our rich catalog of books and videos available - at **[https://github.com/PacktPublishing/](https://github.com/PacktPublishing/)**. - Check them out! - id: totrans-37 - prefs: [] - type: TYPE_NORMAL - zh: 我们还有来自丰富图书和视频目录的其他代码包,可在**[https://github.com/PacktPublishing/](https://github.com/PacktPublishing/)**上查看。去看看吧! -- en: Download the Color Images - id: totrans-38 - prefs: - - PREF_H1 - type: TYPE_NORMAL - zh: 下载彩色图像 -- en: 'We also provide a PDF file that has color images of the screenshots/diagrams - used in this book. You can download it here: [https://www.packtpub.com/sites/default/files/downloads/BeginningReact_ColorImages.pdf](https://www.packtpub.com/sites/default/files/downloads/BeginningReact_ColorImages.pdf).' - id: totrans-39 - prefs: [] - type: TYPE_NORMAL - zh: 我们还提供了一个包含本书中使用的截图/图表的彩色图像的PDF文件。您可以在此处下载:[https://www.packtpub.com/sites/default/files/downloads/BeginningReact_ColorImages.pdf](https://www.packtpub.com/sites/default/files/downloads/BeginningReact_ColorImages.pdf)。 -- en: Conventions Used - id: totrans-40 - prefs: - - PREF_H1 - type: TYPE_NORMAL - zh: 使用的约定 -- en: There are a number of text conventions used throughout this book. - id: totrans-41 - prefs: [] - type: TYPE_NORMAL - zh: 本书中使用了多种文本约定。 -- en: '`CodeInText`: Indicates code words in text, database table names, folder names, - filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles. - Here is an example: "By wrapping the `App` component, the `BrowserRouter` component - enriches it with routing capabilities."' - id: totrans-42 - prefs: [] - type: TYPE_NORMAL - zh: '`CodeInText`:表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和Twitter句柄。例如:“通过包装`App`组件,`BrowserRouter`组件为其赋予了路由功能。”' -- en: 'A block of code is set as follows:' - id: totrans-43 - prefs: [] - type: TYPE_NORMAL - zh: 代码块设置如下: -- en: '[PRE0]' - id: totrans-44 - prefs: [] - type: TYPE_PRE - zh: '[PRE0]' -- en: 'When we wish to draw your attention to a particular part of a code block, the - relevant lines or items are set in bold:' - id: totrans-45 - prefs: [] - type: TYPE_NORMAL - zh: 当我们希望引起您对代码块特定部分的注意时,相关行或项目以粗体显示: -- en: '[PRE1]' - id: totrans-46 - prefs: [] - type: TYPE_PRE - zh: '[PRE1]' -- en: 'Any command-line input or output is written as follows:' - id: totrans-47 - prefs: [] - type: TYPE_NORMAL - zh: 任何命令行输入或输出都以下列方式书写: -- en: '[PRE2]' - id: totrans-48 - prefs: [] - type: TYPE_PRE - zh: '[PRE2]' -- en: '**Bold**: Indicates a new term, an important word, or words that you see onscreen. - For example, words in menus or dialog boxes appear in the text like this. Here - is an example: "Now we need to create a view to display the **Catalog** component - or the **About** page."' - id: totrans-49 - prefs: [] - type: TYPE_NORMAL - zh: '**粗体**:表示新术语、重要单词或屏幕上看到的单词。例如,菜单或对话框中的单词以这种方式出现在文本中。例如:“现在我们需要创建一个视图来显示**目录**组件或**关于**页面。”' -- en: '**Activity**: These are scenario-based activities that will let you practically - apply what you''ve learned over the course of a complete section. They are typically - in the context of a real-world problem or situation.' - id: totrans-50 - prefs: [] - type: TYPE_NORMAL - zh: '**活动**:这些是基于场景的活动,将让您在完整的部分过程中实际应用所学知识。它们通常是在现实世界问题或情况的背景下。' -- en: Warnings or important notes appear like this. - id: totrans-51 - prefs: [] - type: TYPE_NORMAL - zh: 警告或重要提示以这种方式出现。 diff --git a/docs/bg-react/bg-react_1.md b/docs/bg-react/bg-react_1.md index 249bd13..2814990 100644 --- a/docs/bg-react/bg-react_1.md +++ b/docs/bg-react/bg-react_1.md @@ -1,2 +1,450 @@ -# 第二章 +# 第一章:介绍 React 和用户界面设计 +React 无疑是网络上讨论最多的库之一。它已经变得像 jQuery 在其鼎盛时期一样流行,越来越多的开发者选择它来构建他们的网页应用程序的用户界面。为什么它变得如此流行?为什么这个 JavaScript 库与其他库相比如此创新? + +我们将在本书中尝试回答这些问题,展示该库提供的内容,并使用它来构建高效的网页用户界面。 + +在本章中,我们将介绍 React,并开始构建基于 React 的应用程序的基本基础设施。然后,我们将分析如何设计用户界面,以便它可以轻松映射到 React 组件,充分利用 React 的内部架构。 + +在本章结束时,你将能够: + ++ 描述 React 是什么以及它在你的应用程序开发中的作用 + ++ 搭建基于 React 的应用程序的基础设施 + ++ 设计你的应用程序的用户界面,并优化其在 React 中的使用 + +# 什么是 React? + +简而言之,React 是一个用于构建可组合用户界面的 JavaScript 库。这意味着我们可以通过组合称为**组件**的项来构建用户界面。组件是构建用户界面的元素。它可以是一个文本框、一个按钮、一个完整的表单、一组其他组件,等等。甚至整个应用程序的用户界面也是一个组件。因此,React 鼓励创建组件来构建用户界面;如果这些组件是可重用的,那就更好了。 + +React 组件有能力展示随时间变化,并且当我们遵循一些指导原则时,该变化数据的可视化是自动的。 + +由于该库涉及用户界面,你可能会好奇 React 受到了哪些展示设计模式的影响:**模型-视图-控制器**、**模型-视图-展示器**、**模型-视图-视图模型**,还是其他。React 并不局限于特定的展示模式。React 实现了最常见模式中的*视图*部分,让开发者自由选择最佳方法来实现模型、展示器以及构建应用程序所需的其他一切。这一点很重要,因为它使我们能够将其归类为库,而不是框架;因此,与 Angular 等框架的比较可能会出现一些不一致之处。 + +# 如何搭建基于 React 的应用程序 + +React 是一个 JavaScript 库,因此我们应该能够通过 HTML 页面中的`