教程目錄
React 18 核心概念深度教程 (適合初學者)
教程大綱:
第 1 章:React 簡介與前端開發環境回顧
- 1.1 什麼是 React?為什麼選擇 React?
- 1.2 React 的核心特性 (元件化、虛擬 DOM、單向資料流)
- 1.3 前端開發環境回顧 (Node.js, npm/pnpm, Vite)
- 1.4 建立您的第一個 React 應用程式 (使用 Vite)
- 1.5 專案結構概覽
第 2 章:JSX 深度解析
- 2.1 JSX 是什麼?它與 HTML 的關係
- 2.2 在 JSX 中嵌入 JavaScript 表達式
- 2.3 JSX 也是一個表達式
- 2.4 指定 JSX 屬性
- 2.5 JSX 中的子元素
- 2.6 JSX 防止注入攻擊
- 2.7 JSX 代表物件 (Babel 編譯)
第 3 章:React 元件詳解
- 3.1 什麼是元件?
- 3.2 函式元件 (Functional Components)
- 3.2.1 基本語法
- 3.2.2 為什麼推薦函式元件?
- 3.3 類別元件 (Class Components)
- 3.3.1 基本語法與
render()
方法 - 3.3.2 何時可能仍需使用類別元件 (如錯誤邊界)
- 3.3.1 基本語法與
- 3.4 元件的命名約定
- 3.5 元件的組合與拆分
- 3.6 渲染元件
第 4 章:Props (屬性) 的運用
- 4.1 什麼是 Props?
- 4.2 如何傳遞 Props
- 4.3 Props 是唯讀的
- 4.4
props.children
- 4.5 Props 的預設值 (Default Props)
- 4.6 Props 型別檢查 (PropTypes 與 TypeScript)
- 4.7 Props 解構
第 5 章:State (狀態) 與生命週期
- 5.1 什麼是 State?它與 Props 的區別
- 5.2 在函式元件中使用 State:
useState
Hook- 5.2.1 引入
useState
- 5.2.2 讀取 State
- 5.2.3 更新 State
- 5.2.4 State 更新可能是非同步的
- 5.2.5 State 更新的合併 (物件型 State)
- 5.2.6 State 的初始化
- 5.2.1 引入
- 5.3 在類別元件中使用 State (簡介,對比用)
- 5.3.1
this.state
與this.setState()
- 5.3.1
- 5.4 元件的生命週期簡介
- 5.5 在函式元件中模擬生命週期:
useEffect
Hook- 5.5.1 什麼是副作用 (Side Effects)?
- 5.5.2
useEffect
的基本用法 - 5.5.3
useEffect
的依賴項陣列 (Controlling when effects run)- 每次渲染後執行 (無依賴項)
- 僅在掛載和卸載時執行 (空依賴項
[]
) - 依賴特定值變化時執行
- 5.5.4
useEffect
的清理函式 (Cleaning up an effect) - 5.5.5
useEffect
與資料獲取
第 6 章:深入核心 Hooks
- 6.1 回顧
useState
和useEffect
- 6.2
useContext
:跨層級共享狀態- 6.2.1 為什麼需要 Context?(Props Drilling 問題)
- 6.2.2
React.createContext
- 6.2.3
Context.Provider
- 6.2.4
useContext
Hook - 6.2.5 何時使用 Context
- 6.3
useReducer
:複雜狀態邏輯管理- 6.3.1
useState
的替代方案 - 6.3.2 Reducer 函式
- 6.3.3
useReducer
的用法 - 6.3.4 惰性初始化
- 6.3.5 何時選擇
useReducer
- 6.3.1
- 6.4
useCallback
:記憶回呼函式- 6.4.1 為什麼需要
useCallback
?(效能優化,避免不必要的重新渲染) - 6.4.2
useCallback
的用法與依賴項
- 6.4.1 為什麼需要
- 6.5
useMemo
:記憶計算結果- 6.5.1 為什麼需要
useMemo
?(效能優化,避免昂貴的重複計算) - 6.5.2
useMemo
的用法與依賴項
- 6.5.1 為什麼需要
- 6.6
useRef
:存取 DOM 元素或持久化可變值- 6.6.1 存取 DOM 元素
- 6.6.2
useRef
與可變值 (不觸發重新渲染)
- 6.7 Hooks 的使用規則 (Rules of Hooks)
- 6.1 回顧
第 7 章:自訂 Hooks (Custom Hooks)
- 7.1 為什麼需要自訂 Hooks?(邏輯複用)
- 7.2 如何建立一個自訂 Hook
- 7.3 自訂 Hooks 的命名約定 (以
use
開頭) - 7.4 自訂 Hooks 範例 (例如:
useFormInput
,useWindowSize
)
第 8 章:事件處理 (Handling Events)
- 8.1 React 中的事件處理方式 (與 DOM 事件的差異)
- 8.2 事件處理函式的綁定
- 8.3 向事件處理函式傳遞參數
- 8.4 事件物件 (SyntheticEvent)
第 9 章:條件渲染 (Conditional Rendering)
- 9.1 使用 JavaScript 運算子進行條件渲染
- 9.1.1
if
/else
- 9.1.2 三元運算子 (
condition ? true : false
) - 9.1.3 邏輯 AND 運算子 (
&&
)
- 9.1.1
- 9.2 阻止元件渲染 (
return null;
) - 9.3 元件的條件渲染
- 9.1 使用 JavaScript 運算子進行條件渲染
第 10 章:列表與 Keys (Lists and Keys)
- 10.1 渲染多個元件 (使用
map()
) - 10.2
key
屬性的重要性- 10.2.1 為什麼需要 Keys?(幫助 React 識別變更、新增或移除的項目)
- 10.2.2 如何選擇合適的 Key (穩定、唯一)
- 10.2.3 不建議使用索引作為 Key (如果列表順序可能改變)
- 10.3 在元件上使用 Keys
- 10.1 渲染多個元件 (使用
第 11 章:表單處理 (Forms)
- 11.1 受控元件 (Controlled Components)
- 11.1.1 表單元素的值由 React state 控制
- 11.1.2
input
,textarea
,select
的處理 - 11.1.3 處理多個輸入
- 11.2 非受控元件 (Uncontrolled Components) (簡介)
- 11.3 檔案輸入 (
<input type="file" />
) - 11.4 表單驗證 (基礎)
- 11.1 受控元件 (Controlled Components)
第 12 章:狀態提升 (Lifting State Up)
- 12.1 當多個元件需要共享狀態時
- 12.2 將狀態提升到最近的共同父元件
- 12.3 單向資料流的回顧
第 13 章:組合 vs 繼承 (Composition vs Inheritance)
- 13.1 React 更傾向於組合而非繼承
- 13.2 使用組合的方式 (包含關係、特殊化)
- 13.3 為什麼繼承在 React 中不常用
第 14 章:React 哲學與最佳實踐
- 14.1 React 的思考方式:元件化拆分 UI
- 14.2 單向資料流
- 14.3 保持元件小而專注
- 14.4 參考
@learning-react-go.mdc
中的 React 相關最佳實踐