v19.2Latest

描述用户界面

React 是一个用于渲染用户界面(UI)的 JavaScript 库。用户界面由按钮、文本和图像等小单元构建而成。React 允许你将它们组合成可复用、可嵌套的组件。从网站到手机应用,屏幕上的一切都可以分解为组件。在本章中,你将学习如何创建、自定义以及有条件地显示 React 组件。

你的第一个组件

React 应用由称为组件的独立 UI 片段构建而成。React 组件是一个 JavaScript 函数,你可以在其中添加标记。组件可以小到一个按钮,也可以大到整个页面。下面是一个渲染三个Gallery组件的Profile组件:

准备好学习这个主题了吗?

阅读你的第一个组件以了解如何声明和使用 React 组件。

阅读更多

导入和导出组件

你可以在一个文件中声明多个组件,但大文件可能难以导航。为了解决这个问题,你可以将组件导出到其自己的文件中,然后从另一个文件导入该组件:

准备好学习这个主题了吗?

阅读导入和导出组件以了解如何将组件拆分到各自的文件中。

阅读更多

使用 JSX 编写标记

每个 React 组件都是一个 JavaScript 函数,可能包含一些 React 渲染到浏览器中的标记。React 组件使用一种称为 JSX 的语法扩展来表示该标记。JSX 看起来很像 HTML,但它更严格一些,并且可以显示动态信息。

如果我们将现有的 HTML 标记粘贴到 React 组件中,它并不总是有效:

如果你有这样的现有 HTML,可以使用转换器来修复它:

准备好学习这个主题了吗?

阅读使用 JSX 编写标记以学习如何编写有效的 JSX。

阅读更多

在 JSX 中使用大括号编写 JavaScript

JSX 允许你在 JavaScript 文件中编写类似 HTML 的标记,将渲染逻辑和内容放在同一位置。有时你可能希望在该标记中添加一点 JavaScript 逻辑或引用动态属性。在这种情况下,你可以在 JSX 中使用大括号来“打开一扇通往 JavaScript 的窗口”:

准备好学习这个主题了吗?

阅读在 JSX 中使用大括号编写 JavaScript以学习如何从 JSX 中访问 JavaScript 数据。

阅读更多

向组件传递 props

React 组件使用props相互通信。每个父组件都可以通过给子组件传递 props 来向它们传递一些信息。Props 可能会让你想起 HTML 属性,但你可以通过它们传递任何 JavaScript 值,包括对象、数组、函数,甚至 JSX!

准备好学习这个主题了吗?

阅读向组件传递 Props以学习如何传递和读取 props。

阅读更多

条件渲染

你的组件通常需要根据不同的条件显示不同的内容。在 React 中,你可以使用 JavaScript 语法(如if 语句、&&? :运算符)来有条件地渲染 JSX。

在此示例中,JavaScript&&运算符用于有条件地渲染一个勾选标记:

准备好学习这个主题了吗?

阅读条件渲染 以学习有条件渲染内容的不同方法。

阅读更多

渲染列表

你通常希望从数据集合中显示多个相似的组件。你可以使用 JavaScript 的filter()map()与 React 结合,将数据数组过滤并转换成一个组件数组。

对于每个数组项,你需要指定一个key。通常,你会希望使用数据库中的 ID 作为key。Key 让 React 即使在列表发生变化时也能跟踪每个项在列表中的位置。

准备好学习这个主题了吗?

阅读渲染列表 以了解如何渲染组件列表,以及如何选择键。

阅读更多

保持组件纯粹

一些 JavaScript 函数是纯粹的。 纯函数:

  • 只管好自己的事。 它不会更改在调用前已存在的任何对象或变量。
  • 相同的输入,相同的输出。 给定相同的输入,纯函数应始终返回相同的结果。

通过严格地将组件编写为纯函数,你可以避免随着代码库增长而出现的一整类令人困惑的 bug 和不可预测的行为。以下是一个非纯粹组件的示例:

你可以通过传递 props 而不是修改已存在的变量来使此组件变得纯粹:

准备好学习这个主题了吗?

阅读保持组件纯粹以了解如何将组件编写为纯粹、可预测的函数。

阅读更多

作为树的用户界面

React 使用树来建模组件和模块之间的关系。

React 渲染树是组件之间父子关系的表示。

一个包含五个节点的树状图,每个节点代表一个组件。根节点位于树状图的顶部,标记为'根组件'。它有两个箭头向下延伸至标记为'组件 A'和'组件 C'的两个节点。每个箭头都标记为'渲染'。'组件 A'有一个'渲染'箭头指向标记为'组件 B'的节点。'组件 C'有一个'渲染'箭头指向标记为'组件 D'的节点。一个包含五个节点的树状图,每个节点代表一个组件。根节点位于树状图的顶部,标记为'根组件'。它有两个箭头向下延伸至标记为'组件 A'和'组件 C'的两个节点。每个箭头都标记为'渲染'。'组件 A'有一个'渲染'箭头指向标记为'组件 B'的节点。'组件 C'有一个'渲染'箭头指向标记为'组件 D'的节点。

一个 React 渲染树的示例。

靠近树顶部、靠近根组件的组件被视为顶层组件。没有子组件的组件是叶子组件。这种组件分类有助于理解数据流和渲染性能。

建模 JavaScript 模块之间的关系是理解应用程序的另一种有用方式。我们将其称为模块依赖树。

一个包含五个节点的树状图。每个节点代表一个 JavaScript 模块。最顶部的节点标记为'RootModule.js'。它有三个箭头延伸至节点:'ModuleA.js'、'ModuleB.js'和'ModuleC.js'。每个箭头都标记为'导入'。'ModuleC.js'节点有一个'导入'箭头指向标记为'ModuleD.js'的节点。一个包含五个节点的树状图。每个节点代表一个 JavaScript 模块。最顶部的节点标记为'RootModule.js'。它有三个箭头延伸至节点:'ModuleA.js'、'ModuleB.js'和'ModuleC.js'。每个箭头都标记为'导入'。'ModuleC.js'节点有一个'导入'箭头指向标记为'ModuleD.js'的节点。

一个模块依赖树的示例。

依赖树通常被构建工具用来打包所有相关的 JavaScript 代码,供客户端下载和渲染。过大的捆绑包大小会降低 React 应用程序的用户体验。理解模块依赖树有助于调试此类问题。

准备好学习这个主题了吗?

阅读将 UI 视为树,了解如何为 React 应用创建渲染树和模块依赖树,以及它们作为心智模型如何有助于改善用户体验和性能。

阅读更多

接下来是什么?

前往 第一个组件,开始逐页阅读本章!

或者,如果您已经熟悉这些主题,为什么不阅读一下添加交互性