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 社群

開始使用