logo by @sawaratsuki1004

React

用於建構網頁和原生應用程式使用者介面的函式庫

使用元件建立使用者介面

React 讓您可以使用稱為元件的個別區塊來建構使用者介面。您可以建立自己的 React 元件,例如 ThumbnailLikeButton 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 也是一種架構。實作它的框架允許您在伺服器上,甚至在建置期間,於非同步元件中擷取資料。從檔案或資料庫讀取資料,並將其傳遞給您的互動式元件。

利用每個平台的最佳功能

人們喜歡網頁應用程式和原生應用程式的原因各不相同。React 讓您可以使用相同的技能建置網頁應用程式和原生應用程式。它仰賴每個平台的獨特優勢,讓您的介面在每個平台上都感覺恰到好處。

example.com

忠於網頁

人們期望網頁應用程式的頁面載入速度很快。在伺服器上,React 讓您可以在仍在擷取資料時開始串流 HTML,在任何 JavaScript 程式碼載入之前逐步填入剩餘的內容。在用戶端,React 可以使用標準網頁 API,即使在渲染過程中也能保持 UI 的回應速度。

下午 3:49

打造真正的原生體驗

人們期望原生應用程式的外觀和感覺與其平台一致。 React Native Expo 讓您使用 React 為 Android、iOS 等平台建置應用程式。它們的外觀和感覺像原生應用程式,因為它們的 UI 就是真正的原生 UI。它不是網頁檢視 — 您的 React 元件會渲染平台提供的真正 Android 和 iOS 檢視。

使用 React,您可以同時成為網頁原生應用程式開發者。您的團隊可以將產品發佈到許多平台,而不會犧牲使用者體驗。您的組織可以 bridging the platform silos,並組建端到端擁有完整功能的團隊。

在未來準備就緒時升級

React 以謹慎的態度應對變革。每個 React 的提交都會在超過十億用戶使用的關鍵業務平台上進行測試。Meta 內部超過 10 萬個 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 社群

開始使用