React JS #2 | JSX 語法

koko-avatar-img
發佈於React
更新 發佈閱讀 4 分鐘

告別字串拼接地獄:用 JSX 解鎖 React 的優雅姿態

在傳統的網頁開發中,我們經常使用 JavaScript 來動態生成 HTML 元素,這往往需要大量的字串拼接,不僅可讀性差,也容易出錯。

const element = document.createElement('h1');
element.className = 'greeting';
element.textContent = 'Hello, world!';
document.getElementById('root').appendChild(element);

上述程式碼雖然可以產生一個 <h1> 標籤,但卻顯得冗長且不易理解。


JSX:JavaScript 的擴充語法,打造 HTML 般的程式碼

JSX (JavaScript XML) 是一種 JavaScript 的語法擴充,允許你在 JavaScript 程式碼中編寫類似 HTML 的語法。JSX 並不能直接在瀏覽器中執行,需要透過 Babel 等工具將其轉換為標準的 JavaScript 程式碼。

以下為JSX 程式碼:

const element = (
<h1 className="greeting">
Hello, world!
</h1>
);

會被 Babel 轉換為:

const element = React.createElement(
'h1',
{ className: 'greeting' },
'Hello, world!'
);


JSX 語法規則

  • 回傳單一個根元素: 如果有一元件最終回傳多個元素,我們需要將這些元素用一元素包起來當做父層元素(例如用<div> 或使用 Fragment (<></>)。
  • 所有標籤都需要 Close:所有標籤都必須有對應的閉合標籤,包括單標籤 (self-closing tags),例如:<img> 一定要用 <img /> 表示。
  • JSX - 插入變數 : 透過{},可以讓我們將變數、數值甚至是表達式插入進元素裡。
const name = 'John';
const element = (
<h1>Hello, {name}!</h1>
);
const isLoggedIn = true;
const element = (
<div>
{isLoggedIn ? (
<h1>Welcome back!</h1>
) : (
<h1>Please log in.</h1>
)}
</div>
);
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
<li key={number}>{number}</li>
);
const element = (
<ul>{listItems}</ul>
);
  • 幾乎所有屬性名稱是用 camelCase 表示: JSX 最終會被轉換為 JavaScript,而 JavaScript 會對變數名稱有限制,像是不能使用保留字和連接號,所以在寫 JSX 時,才會將許多屬性名稱用 camelCase 的方式書寫。
    • for 須改寫成 htmlFor。
      <label htmlFor='check-label' />
    • css 的 class,要用 className
      <div className="container">
      </div>
    • onclick ⇒ onClick ;onchange ⇒ onChange;tabindex ⇒ tabIndex (備註:aria-* 和 data-* 則不受此限)
      <but	ton onClick={()=>{console.log('點擊')}}>
      <div tabIndex="1" />
    • style 要用  style={{}}

結語

JSX 是一種強大且方便的語法,讓 React 開發者能夠更直觀地描述 UI 結構,提高程式碼可讀性與開發效率。

留言
avatar-img
koko的沙龍
1會員
34內容數
koko的沙龍的其他內容
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 扮演著至關重要的角色。它們是構成使用者介面 (UI) 的基本 building blocks,如同積木一般,可以組合成複雜的應用程式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 扮演著至關重要的角色。它們是構成使用者介面 (UI) 的基本 building blocks,如同積木一般,可以組合成複雜的應用程式。
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
vocus 最具指標性的創作者社群──「野格團」, 2026 年春季,這支充滿專業、熱情的團隊再次擴編,迎來了 8 位實力堅強的「個人主題專家」新成員 💫💫💫 從投資理財、自我成長、閱讀書評到電影戲劇,他們各自帶著獨特的「創作超能力」準備在格友大廳與大家見面。
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
一般在使用 TypeScript 的時候,大家都有遇過定義列舉資料的情境吧。 不過不管是 enum 和 literal 的方式其實都有些小缺點,以下推薦一個個人認為體驗更好的方式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
在程式任何地方都能修改各種react組件狀態的做法分享
Thumbnail
在程式任何地方都能修改各種react組件狀態的做法分享
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News