logo by @sawaratsuki1004

React

用于构建 Web 和原生用户界面的库

使用组件创建用户界面

React 允许您使用称为组件的独立单元构建用户界面。创建您自己的 React 组件,例如 Thumbnail(缩略图),LikeButton(点赞按钮)和 Video(视频)。然后将它们组合成完整的屏幕、页面和应用程序。

Video.js

function Video({ video }) {
return (
<div>
<Thumbnail video={video} />
<a href={video.url}>
<h3>{video.title}</h3>
<p>{video.description}</p>
</a>
<LikeButton video={video} />
</div>
);
}

无论您是独自工作还是与数千名其他开发人员一起工作,使用 React 的感觉都是一样的。它的设计允许您无缝地组合由独立个人、团队和组织编写的组件。

使用代码和标记编写组件

React 组件是 JavaScript 函数。想要有条件地显示某些内容?使用 if 语句。显示列表?尝试数组的 map() 方法。学习 React 就是学习编程。

VideoList.js

function VideoList({ videos, emptyHeading }) {
const count = videos.length;
let heading = emptyHeading;
if (count > 0) {
const noun = count > 1 ? 'Videos' : 'Video';
heading = count + ' ' + noun;
}
return (
<section>
<h2>{heading}</h2>
{videos.map(video =>
<Video key={video.id} video={video} />
)}
</section>
);
}

这种标记语法称为 JSX。它是一种由 React 推广的 JavaScript 语法扩展。将 JSX 标记放在相关的渲染逻辑附近,可以使 React 组件易于创建、维护和删除。

在任何需要的地方添加交互性

React 组件接收数据并返回应显示在屏幕上的内容。您可以将新数据传递给它们以响应交互,例如当用户在输入框中键入内容时。然后,React 将更新屏幕以匹配新数据。

SearchableVideoList.js (可搜索视频列表.js)

import { useState } from 'react';

function SearchableVideoList({ videos }) {
const [searchText, setSearchText] = useState('');
const foundVideos = filterVideos(videos, searchText);
return (
<>
<SearchInput
value={searchText}
onChange={newText => setSearchText(newText)} />
<VideoList
videos={foundVideos}
emptyHeading={`No matches for “${searchText}”`} />
</>
);
}

您不必使用 React 构建整个页面。将 React 添加到您现有的 HTML 页面中,并在该页面的任何位置渲染交互式 React 组件。

使用全栈框架构建应用

React 是一个库。它允许您将组件组合在一起,但它没有规定如何进行路由和数据获取。要使用 React 构建完整的应用程序,我们推荐使用全栈 React 框架,例如 Next.js Remix.

confs/[slug].js

import { db } from './database.js';
import { Suspense } from 'react';

async function ConferencePage({ slug }) {
const conf = await db.Confs.find({ slug });
return (
<ConferenceLayout conf={conf}>
<Suspense fallback={<TalksLoading />}>
<Talks confId={conf.id} />
</Suspense>
</ConferenceLayout>
);
}

async function Talks({ confId }) {
const talks = await db.Talks.findAll({ confId });
const videos = talks.map(talk => talk.video);
return <SearchableVideoList videos={videos} />;
}

React 也是一种架构。实现它的框架允许您在服务器上甚至在构建期间运行的异步组件中获取数据。从文件或数据库中读取数据,并将其传递给您的交互式组件。

利用每个平台的优势

人们喜爱 Web 和原生应用各有不同的原因。React 允许您使用相同的技能构建 Web 应用和原生应用。它利用每个平台的独特优势,让您的界面在每个平台上都感觉恰到好处。

example.com(示例网站)

忠于 Web

人们期望 Web 应用页面加载速度快。在服务器上,React 允许您在仍在获取数据时开始流式传输 HTML,在加载任何 JavaScript 代码之前逐步填充剩余内容。在客户端,React 可以使用标准 Web API 来保持您的 UI 响应,即使在渲染过程中也是如此。

晚上 11:18

打造真正的原生体验

人们期望原生应用的外观和感觉与其平台一致。 React Native Expo 允许您使用 React 为 Android、iOS 等平台构建应用。它们的外观和感觉是原生的,因为它们的 UI 就是真正的原生。它不是 Web 视图——您的 React 组件渲染由平台提供的真正的 Android 和 iOS 视图。

使用 React,您可以成为 Web 原生开发者。您的团队可以发布到多个平台,而不会牺牲用户体验。您的组织可以弥合平台孤岛,并组建拥有端到端完整功能的团队。

在未来准备就绪时升级

React 谨慎地处理变更。每个 React 提交都会在拥有超过 10 亿用户的关键业务界面上进行测试。Meta 的超过 100,000 个 React 组件有助于验证每个迁移策略。

React 团队一直在研究如何改进 React。一些研究需要数年时间才能获得回报。React 对将研究想法投入生产有很高的标准。只有经过验证的方法才会成为 React 的一部分。

加入一个数百万人的社区(你不是孤军奋战)

你并不孤单。每个月都有来自世界各地的两百万开发者访问 React 文档。React 是个人和团队都能认同的选择。

People singing karaoke at React Conf
Sunil Pai speaking at React India
A hallway conversation between two people at React Conf
A hallway conversation at React India
Elizabet Oliveira speaking at React Conf
People taking a group selfie at React India
Nat Alison speaking at React Conf
Organizers greeting attendees at React India

这就是为什么 React 不仅仅是一个库、一种架构,甚至是一个生态系统。React 是一个社区。在这里你可以寻求帮助,找到机会,结识新朋友。你会遇到开发者和设计师,初学者和专家,研究人员和艺术家,教师和学生。我们的背景可能千差万别,但 React 让我们可以一起创建用户界面。

logo by @sawaratsuki1004

欢迎来到React 社区

开始使用