初學者必知的 React JSX 基礎
2025/03/24
這篇文章專為新手準備,解釋了 JSX 的基本概念。你將學會如何在 React 中使用類似 HTML 的語法來創建組件,大幅提升寫程式的直觀性與效率。學習如何跨越傳統 Javascript 與 HTML 的界限,輕鬆打造動態網頁。

什麼是 JSX?
JSX 是 React 中用來描述 UI 的語法擴展,它的外觀像是 HTML,但功能卻更為強大。使用 JSX,你可以在 JavaScript 代碼中直接撰寫類似 HTML 的標記,讓你的程式碼更具可讀性。例如,你可以寫出以下的 JSX code:
const element = <h1>Hello, world!</h1>;
這段程式碼會被轉換為一般的 JavaScript 來執行。因此,JSX 可以讓開發者在熟悉的範例中撰寫更為複雜的應用。
JSX 的基本語法與規則
掌握 JSX 的基本語法能讓你避免常見的錯誤。首先,所有的 JSX 標籤都必須有一個閉合標籤,即使是自閉合的標籤也不例外,例如:
<img src="image.jpg" />
其次,所有的標籤名稱必須是小寫,這是因為小寫標籤會被解析為 HTML 標籤,而大寫開頭的標籤會被解析為 React 元件。此外,任何使用 JavaScript 表達式的地方,都需要放在大括號 {}
中,如:
const message = <p>Hello, {userName}!</p>;
在 JSX 中使用 JavaScript 表達式
JSX 中的一大優勢是在標記中內嵌 JavaScript 表達式,這使得它非常靈活。例如,我們可以依據條件來渲染不同的內容:
const isLoggedIn = true; const userGreeting = <h1>{isLoggedIn ? 'Welcome, User!' : 'Please Sign In'}</h1>;
這段程式碼利用條件運算子在同一個組件中渲染不同的文字,提升程式的動態表現能力。
JSX 中的屬性與樣式設定
在 JSX 中設定屬性時,使用的語法和 HTML 相似,但有幾個不同之處。例如,class 屬性在 JSX 中被改成 className,以避免與 JavaScript 的關鍵字衝突:
const element = <div className="container">Content</div>;
至於樣式的設定,必須使用 CamelCase 格式來表示 CSS 屬性名稱,並將其值設為字符串或變數:
const element = <div style={{ backgroundColor: 'blue', fontSize: '14px' }}>Styled Text</div>;
JSX 支援的子元素
JSX 提供彈性的方式來處理子元素。你可以在一個元素中放入其他的 JSX element 或 JavaScript 表達式。以這段範例來看,我們可以用一個父元素包住多個子元素:
const list = ( <ul> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ul> );
這種方法使得列表、卡片等複雜的 UI 結構能夠簡單地被組合與操作。
避免 HTML 陷阱
需要注意的是,某些 HTML 的屬性在 JSX 中並不適用於 React。比如 for
屬性在 JSX 中需要被改為 htmlFor
,因為 for
是 JavaScript 的保留字。接下來這個例子展示了如何正確地使用這些屬性:
const element = ( <label htmlFor="name"> Name: <input type="text" id="name" /> </label> );
這種適應性改變需要稍加注意,以免發生不必要的錯誤。
JSX 與元件的關聯
JSX 在元件開發中扮演著重要角色。透過組合 JSX,我們可以創建可重複使用的元件。以下是一個簡單的 React Function Component,利用 JSX 回傳渲染的內容:
function WelcomeMessage() { return <h1>Welcome to React!</h1>; }
這個元件可以在其他組件中使用,就像是在使用自定義標籤一樣,讓程式碼保持簡潔且易維護。
JSX 高效率渲染的關鍵
利用 JSX,React 可以高效地更新介面。因為每次頁面更新時,React 會先進行虛擬 DOM 的比較,然後再實際更新需要改動的部分。這意味著,開發者在撰寫 JSX 時,不需要過於擔心效能問題,因為 React 自己就能夠優化處理。例如,嵌套多層的元件也不會在效能上造成明顯的瓶頸:
function Container() { return ( <div> <NavigationBar /> <Content /> <Footer /> </div> ); }
這確保了即使是大型應用也能夠流暢運行。
JSX 編譯與設置
儘管 JSX 像 HTML,但它實際上需要經典的 JavaScript 轉譯工具如 Babel 的支持來運行。這是因為瀏覽器無法直接理解 JSX 語法。你可以透過以下方式設置 Babel 來支援 JSX:
首先,安裝必要的套件:
npm install --save-dev @babel/core @babel/preset-react
然後,創建一個 .babelrc
文件以支持 JSX 語法:
{ "presets": ["@babel/preset-react"] }
這樣一來,JavaScript 編譯器就能識別和處理你的 JSX 程式碼了。
結論:為什麼要使用 JSX?
使用 JSX 會讓 React 開發的整個過程更直觀且高效。它允許開發者以更貼近 HTML 的方式撰寫 UI,使得掌握 React 上手更快。由於它無縫地結合了設計與邏輯,開發者可以更好地視覺化想法並迅速地迭代產品。
此外,JSX 的靈活性讓它成為創建複雜應用的有力工具。在享受這些便利的同時,一旦適應了 JSX,開發者就能更輕鬆地迎合未來的工程挑戰。