跳至主要内容

JSX 基礎介紹

JSX

  • JSX : Javascript 的一種 Extension,可簡單想成是 JS VM 下可執行的另一套語言。

JSX 撰寫限制與注意事項:

  • 用來編寫 UI 元件。並將邏輯與 HTML 結構封裝在一個 js 組件之內。
  • JSX 僅能返回單一結構。通常是 <div> 或是簡單的定義一個 Fragment <>,或是回傳 null 來呈現空的狀態。
  • 所有 Tags 必須有完整的關閉結構。
  • JSX 變數命名: 通常採 camelCase。因 JSX 會轉換成 JavaScript 物件,所以變數命名上也受 JavaScript 語法限制。
    • 不接受連字符號。
    • 採駝峰命名法 (camelCase)。
    • class 為保留字。

JSX 變數與參數使用方式

  • JSX 中可以藉由大括號直接存取 JavaScript 中的參數,變數或表達式回傳值。
    • attribute 等號後的參數
    • JSX tag 的內容部分

JSX 中一般使用大括號情境

export default function TodoList() {
const name = 'Insect-Totem';

const today = new Date();

function formatDate(date) {
return new Intl.DateTimeFormat(
'en-US',
{ weekday: 'long' }
).format(date);
}

return (
<h1>Nice to meet you, {name}. It's {formatDate(today)}.</h1>
);
}

JSX 中使用雙大括號情境

  • JSX 下也允許你以物件方式傳遞資料,因物件結構本身有一層大括號,因而看起來像是有兩層大括號。
  • 常見情形是傳遞 CSS style
  • 此處須注意: JSX 變數命名與轉換規則,backgroundColor 採用 camelCase。
    • 以 javascript 物件結構傳遞多項資訊
    export default function TodoList() {
const author = {
name: 'Insect Totem',
theme: {
backgroundColor: 'black',
color: 'white'
}
};

return (
<div style={author.theme}>
<h1>{author.name}'s Notebook </h1>
<ul style={{
backgroundColor: 'black',
color: 'pink'
}}>
<li>Python</li>
<li>Rust</li>
<li>Notion</li>
</ul>
</div>
);
}