指南

什麼是 React?非技術人士嘅白話指南

React 係一個用嚟建構用戶介面嘅 JavaScript 函式庫,即應用程式入面人哋睇到同撳到嘅部分。你會用一啲可重用嘅組件(例如一個按鈕、一張產品卡,或者整個頁面)去組合畫面,而 React 會令畫面同你嘅數據保持同步:數據改變時,React 就會更新頁面上依賴該數據嘅部分。佢由 Facebook(而家係 Meta)創立,屬開源項目,而且係最廣泛使用嘅網頁應用程式建構方式之一。

用 AI 建造嘢時,點解佢重要

如果你用 AI 工具建造網頁應用程式,佢好有可能係以 React 寫成嘅。好多 AI 應用程式建構器預設就用 React,因為佢受歡迎、文件完整,而且有大量 React 程式碼俾 AI 模型學習。

用 AI 建造嘢,你唔需要自己寫 React。但識少少,會對你有幫助:

  • 精準描述改動。 「將 ProductCard 組件嘅價格改為粗體」比「喺某處令價格更突出」清楚得多。
  • 睇得明錯誤訊息。 例如「Cannot read properties of undefined」或者「Too many re-renders」,你會更容易理解。
  • 作出合理選擇。 純 React 應用程式係喺瀏覽器渲染,會影響搜尋可見度同首次載入速度。知道呢點,你就可以決定幾時要求另一種設定。
  • 日後同開發人員合作。 React 係常見嘅技能,開發人員通常都可以接手一個 React 程式碼庫。

日常生活比喻

想像樂高積木。你唔係由一大塊磚雕出一整個模型,而係用標準積木砌出嚟。幾塊積木可以做成一個車輪;四個車輪加上其他部件就成為一架汽車。如果你想每架車都有紅色車輪,只需要改一次車輪嘅設計。

React 組件就係呢啲積木。一個 Button 組件可以用喺 ProductCard 入面,ProductCard 又可以用喺 ProductGrid 入面,而 ProductGrid 係 ShopPage 嘅一部分。改一次 Button,應用程式入面每個按鈕都會跟住改。

比喻嘅另一半係:想像每次你改動說明書,樂高模型都會自行重組。呢個就係 React 嘅另一個特點:你描述當前數據下畫面應該係點樣,然後 React 會計出頁面上要改邊啲嘢。

核心概念

組件(Components)

組件係一個 JavaScript 函式,會返回一段介面。React 嘅文件將組件描述為擁有自己邏輯同外觀嘅一段 UI。組件名稱以大寫字母開頭。

JSX

組件通常以 JSX 寫成,佢睇落好似夾雜喺 JavaScript 入面嘅 HTML:

function Greeting() {
  return <h1>Welcome back!</h1>;
}

JSX 並非必須,但 React 嘅文件指出大部分項目都會用佢。喺瀏覽器執行之前,佢會被轉換成純 JavaScript。

Props

Props 係你傳入組件嘅輸入,好似可重用部件上嘅設定:

<ProductCard name="Lavender Candle" price={24} />

同一個 ProductCard 可以顯示任何產品。

State(狀態)

State 係組件記住嘅資料,喺應用程式運行時可以改變,例如選單係咪打開、搜尋框入面打咗咩字、購物車入面有幾多件嘢。當 state 改變,React 會重新渲染組件,令畫面同資料一致。

Hooks

Hooks 係以 use 開頭嘅函式,例如 useState(記住一個值)同 useEffect(渲染後執行嘅程式碼,例如用嚟攞數據)。你會喺 AI 生成嘅 React 程式碼入面到處見到佢哋。

實例:購物車計數器

假設你嘅網上商店有一個「加入購物車」按鈕,同一個顯示物品數量嘅購物車圖示。用 React 寫出嚟大致如下:

import { useState } from "react";

function Shop() {
  const [cartCount, setCartCount] = useState(0);

  return (
    <div>
      <CartIcon count={cartCount} />
      <ProductCard
        name="Lavender Candle"
        price={24}
        onAdd={() => setCartCount(cartCount + 1)}
      />
    </div>
  );
}

function CartIcon({ count }) {
  return <span>Cart ({count})</span>;
}

function ProductCard({ name, price, onAdd }) {
  return (
    <div>
      <h2>{name}</h2>
      <p>${price}</p>
      <button onClick={onAdd}>Add to cart</button>
    </div>
  );
}

當顧客撳「加入購物車」時會發生以下事情:

  1. 按鈕嘅 onClick 調用 onAdd,而 onAdd 再調用 setCartCount。
  2. React 將 cartCount 狀態由 0 更新為 1。
  3. React 重新渲染 Shop,並將 count={1} 傳入 CartIcon。
  4. 頁面而家顯示「Cart (1)」。冇人寫過「搵到購物車文字再改佢」嘅程式碼,畫面係跟住數據走。

留意一下限制。呢個計數存在瀏覽器嘅記憶體入面。一刷新頁面,佢就會變返 0。要保留購物車,你需要將資料儲存喺一個持久嘅地方,例如 cookie、瀏覽器儲存,或者透過後端存入資料庫。React 負責畫面,但佢唔會儲存你嘅資料。

React 喺網頁應用程式入面嘅位置

部分做咩常見選擇
UI 函式庫建構介面React
語言程式碼以咩語言寫成JavaScript 或 TypeScript
建構工具將原始碼轉換成瀏覽器載入嘅檔案;運行開發伺服器Vite
框架(可選)加入路由、伺服器渲染、數據載入Next.js、React Router
樣式外觀點樣Tailwind CSS、CSS 檔案
後端業務邏輯、數據、機密Node.js、Python 等
資料庫儲存數據Postgres 等

「Vite + React」應用程式係喺瀏覽器渲染(單頁應用程式)。Next.js 應用程式則可以先喺伺服器渲染頁面,有助搜尋引擎同首次載入速度。

常見名詞解釋

名詞意思
組件(Component)一個可重用嘅介面部分,以函式寫成。
JSX寫喺 JavaScript 入面、似 HTML 嘅語法,用嚟描述組件。
Props傳入組件嘅輸入。
State(狀態)組件記住、會隨時間改變嘅數據。
Hook以 use 開頭嘅函式,為組件加入狀態等功能。
渲染/重新渲染(Render/re-render)React 在改變之後,再次計出畫面應該顯示咩。
單頁應用程式(SPA)只載入一次,之後用 JavaScript 更新頁面、而唔係載入新頁面嘅應用程式。
伺服器端渲染(SSR)喺伺服器上先產生頁面嘅 HTML,然後先送出。
npm 套件可以安裝嘅可重用程式碼函式庫,例如日期選擇器或者圖表函式庫。
React Native一個相關項目,用嚟建構原生手機應用程式。

常見錯誤同誤解

  • 「React 係一種程式語言。」 佢係一個用 JavaScript(或 TypeScript)寫成、並喺其中使用嘅函式庫。
  • 「React 會儲存我嘅數據。」 State 存喺瀏覽器入面,刷新就冇咗。要持久保存嘅數據,需要後端同資料庫。
  • 將機密放入 React 程式碼。 React 應用程式嘅所有內容都會送到訪客嘅瀏覽器,喺入面嘅 API 金鑰等同公開。要將佢哋放喺伺服器上。
  • 「React 應用程式唔可以喺搜尋排名。」 純客戶端渲染對搜尋較弱,但預先渲染或者伺服器渲染大部分都可以解決。
  • 超大型組件。 一個 1,000 行嘅組件,無論人定 AI 都好難安全地修改。要求拆細啲。
  • 以為 React 網頁應用程式就係手機應用程式。 佢喺瀏覽器執行,包括手機瀏覽器,但並唔係 App Store 應用程式。

要求你嘅 AI 建構器做嘅嘢

  • 「將呢個頁面拆成幾個細小、有名稱嘅組件,並告訴我每個組件放喺邊個檔案。」
  • 「令 ProductCard 組件可以重用,並以 name、price 同 image 作為 props。」
  • 「將購物車儲存到資料庫,令佢刷新之後都仍然存在。」
  • 「所有 API 金鑰都放喺伺服器上;React 程式碼應該調用我哋自己嘅 API。」
  • 「為來自伺服器嘅數據加入載入中同錯誤狀態。」
  • 「如果呢啲頁面嘅搜尋可見度重要,就預先渲染佢哋,或者使用伺服器渲染嘅設定。」
  • 「用白話解釋呢個錯誤代表咩,以及佢來自邊個組件。」

如果想了解整體圖像,可以睇前端與後端;要檢查 AI 寫出嘅嘢,可以睇點樣檢閱 AI 生成嘅程式碼。

Mythex 中嘅 React

除非你另外要求,Mythex 開始新專案時會採用 Vite + React + TypeScript + Tailwind,並喺你傾偈嘅同時運行即時預覽。你可以喺第一條提示入面指定另一種設定,例如「用 Next.js」或者「純靜態 HTML 登陸頁」,Mythex 會根據你寫嘅內容去選擇;呢方面冇設定畫面。技術如何選定嘅文件頁會解釋各個選項。程式碼編輯器喺免費計劃係唯讀嘅;喺 Pro 計劃,你可以直接編輯 React 程式碼,並將專案匯出,喺其他地方繼續工作。

常見問題

簡單嚟講,什麼係 React?

React 係一個用嚟建構用戶介面嘅 JavaScript 函式庫。你會用一啲可重用嘅組件(例如一個按鈕、一張產品卡,或者整個頁面)去組合畫面。當背後嘅數據改變,React 就會更新畫面上嘅內容。

React 係框架(framework)定係函式庫(library)?

React 自稱係函式庫:佢專注於建構介面。喺佢之上建立嘅框架,例如 Next.js,會加入路由、伺服器渲染同數據載入等功能。

點解 AI 應用程式建構器咁多人用 React?

React 係最廣泛使用嘅網頁介面建構方式之一,所以有大量 React 程式碼同文件俾 AI 模型學習。佢嘅組件結構亦都適合做細微而有針對性嘅改動。

React 對 SEO 有唔好嗎?

本身唔會。一個完全喺瀏覽器渲染嘅 React 應用程式,對部分搜尋引擎爬蟲嚟講比較難讀取;但 React 都可以預先渲染(prerender)或者喺伺服器渲染,例如用 Next.js,大致可以解決呢個問題。

React 同 React Native 係咪一樣?

唔係。React 建構喺瀏覽器執行嘅網頁介面;React Native 則採用相同嘅概念,建構原生嘅 iOS 同 Android 應用程式。兩者共享一啲概念,但大部分建構元件唔同。

Mythex · Pricing · 用 AI 建造任何嘢 · 網站及應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(台灣)