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

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 本质

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

下午 3:49

真正成为原生应用

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

使用 React,您可以成为一名 Web 原生开发人员。您的团队可以向多个平台发布应用,而不会牺牲用户体验。您的组织可以打破平台孤岛,并组建拥有整个功能端到端的所有权的团队。

未来准备就绪时升级

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

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

加入一个社区数百万

您并不孤单。来自世界各地的 200 万开发人员每月都会访问 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 社区

开始