Skip to content
This page has been auto-translated and may contain errors.View in English

React 简介

Juno

欢迎来到 React 手册!我是 Juno,很高兴你在这里。React 是构建用户界面的工具,首先要明白的是,React 从头到尾都是 JavaScript。如果你还没有完全掌握 JavaScript,这很正常,值得先在那里花点时间打好基础。

我们逐次介绍一个小概念:页面的一部分、数据的一部分,慢慢地你就会看到它们如何组合在一起。这里任何东西都不会太基础到不能提问。

如果你还没有做过 JavaScript 手册,先从那里开始,然后再回到这里。学过 JavaScript 以后,React 会变得清晰得多。

Juno

欢迎来到 React 手册。我是 Ace,我喜欢保持实用的风格。React 是围绕组件来组织用户界面的方式:小的、自包含的单元,你构建一次就能多次复用,每个单元都持有自己的数据切片。

我们全程保持动手实践:读一个概念、用它构建一个组件、接上状态、看它如何对点击做出反应。React 是一个通过使用来学习的库,所以我们就用这种方式来学它。

Juno

欢迎来到 React 手册。我是 Sol,我会带你了解底层思想和容易出错的地方。核心就是这样:你描述 UI 在给定数据下应该是什么样子,当数据改变时 React 重新渲染。搞对这个模型,React 的大部分内容就从这里衍生出来了。

一部分能力来自于知道什么时候 React 真正有价值。当 UI 有真正的状态要管理时,它给你很多好处,但也增加了你并不总是需要的复杂性。要理解渲染模型、hook 规则,以及抽象漏洞的地方。仔细阅读,对一切都提出质疑,包括我的观点。

一旦页面变得交互,问题就出现了。在纯 JavaScript 中,你在页面里找到想要的元素,每次数据改变时手动更新它,自己保持屏幕和数据的同步。两个按钮还行。但随着页面增长,这很快就变得脆弱,因为每个状态都有自己的一套手动更新要记住。React 把这翻转过来:你描述当前数据下 UI 应该是什么样子,React 在数据改变时处理更新

React 是一个 JavaScript 库,用 组件 来构建用户界面,你通过组合这些单元来搭建完整屏幕。

什么是组件?

组件是一个返回 UI 片段的函数。更大的屏幕是通过组合许多组件来构建的。组件 章节介绍如何编写和组合它们。

如果你学过 JavaScript 手册,你已经用纯手工做过这个复杂的版本。DOM 章节是你学习如何读取和改变页面元素的地方,事件 章节是你学习如何让页面对点击或按键做出响应的地方。React 就是建立在这些概念之上的。随着你的应用增长,它给了你一种更清晰的方式来表达它们。

有一点要明确:React 是彻底的 JavaScript。组件是函数,props 是参数,state 是变量,组件内部的逻辑和你在其他地方写的是同一种语言。没有捷径。如果你还没有学过 JavaScript 手册,从那里开始,因为在基础上花的时间在这里会直接得到回报。读一下 什么是框架 对理解像 React 这样的库在大局中的位置和它为你做什么也很值得。

这是范围,你就知道这个手册涵盖什么。它从 React 是什么、它从哪里来、以及如何在你自己的机器上用 Vite 运行项目开始。从那里:构建和组合组件、用 JSX 写标签、样式、用 props 向下传递数据、用 keys 渲染列表、在 state 中保存变化的数据、响应事件、条件渲染、处理表单、在组件间共享 state、用 useEffect 运行副作用、从服务器获取数据、用 refs 访问 DOM,以及更广泛的 hooks 集合。它以 React 思维、让界面无障碍,以及之后是什么的地图结束。这就是你在几乎每个 React 应用中使用的核心。更广泛的生态系统、路由、Next.js 和部署,在最后一章中有指引,而不是在这里教。把这些基础打牢,其余的就短得多了。

JunoReact 仍然是 JavaScript 这是关于 React 令人欣慰的事:没有单独的 React 语言要学。组件是一个 JavaScript 函数,props 是它的参数,state 是你存储的值。每次 React 感到困惑时,通常帮助是问一下底层普通 JavaScript 在做什么,因为那就是它的全部。
JunoReact 仍然是 JavaScript 记住这一点:React 在你已经写的 JavaScript 之上增加了少数新概念,组件、JSX、props、state、hooks。其余的是函数、数组、对象和事件在做它们常规的工作。当一个组件行为不当时,首先把它当普通 JavaScript 来读,这通常会比寻求 React 特定的答案更能帮助你解决问题。
JunoReact 仍然是 JavaScript 这个抽象有意是薄的。组件是其 props 和 state 的函数,返回 UI 的一个描述;React 的任务是有效地调和这个描述和 DOM。几乎每个陷阱,闭包过期、不必要的重新渲染、effect 在你不期望时触发,都来自于忘记函数在每次渲染时都再次运行。在脑子里坚持 JavaScript 执行模型,React 的行为就停止令人惊讶了。

认识你的向导

这个手册由三位向导主持,你可以选择哪一个为你讲解。内容对所有人都是一样的;你的向导设置讲述的语气,以及在适应的页面上,每个部分的深度。

  • Juno 教初学者轨道:温暖耐心,简洁的类比,不做任何假设。
  • Ace 教中级轨道:实用和构建优先,直接讲你实际做的事。
  • Sol 教 Deep Dive:机制、权衡和生产细节,其他人都跳过。

可以随时从任何页面顶部的选择器切换向导,或在右下角打开 Preferences 来改变你的向导、语言或字体大小。

设置好以后,手册正式开始。下一章 什么是 React,介绍 React 真正是什么、它被构建来解决的问题,以及它如何与你已经掌握的 JavaScript 相配合。

在 Scrimba 上学习 React 课程在浏览器中免费构建六个 React 项目,由 Bob Ziroll 讲授。