iT邦幫忙

2025 iThome 鐵人賽

DAY 1
0
Modern Web

30天入門:學會第一個前端框架-React系列 第 1

Day 1 | React入門:什麼是React?

  • 分享至 

  • xImage
  •  

React是什麼

  • 用來建構使用者介面的函式庫
  • 可以簡單的建造 SPA (Single Page Application)單頁式應用程式
    → 整個網站只有一個 HTML 頁面(index.html),之後的內容切換、資料更新,都是透過 JavaScript 動態改變頁面內容
    https://ithelp.ithome.com.tw/upload/images/20250818/20177899zC3ITRvRBx.png
    圖一:SPA (Single Page Application)單頁式應用程式的運作

React的運作

  • 把整個畫面拆成一個個元件(Component)來建構,再把它們組合起來變成完整的頁面,更有效率且維護地建造互動式網頁介面
  • 如果直接用 HTML, CSS, JavaScript 編寫網頁,開發過程會很複雜且難以維護
    https://ithelp.ithome.com.tw/upload/images/20250818/20177899atkHoLZjFE.png
    圖二:React的元件架構(範例)

https://ithelp.ithome.com.tw/upload/images/20250818/20177899TbdMGeL5M4.png
圖三:ANSII 樹狀圖(範例)


index.js

在React專案中,index.js是應用程式的入口,負責將元件渲染到瀏覽器DOM的畫面上。

index.js
https://ithelp.ithome.com.tw/upload/images/20250818/20177899TmbPDfrpR2.png

建立 React 渲染入口

const root = ReactDOM.createRoot(document.getElementById('root'));

document.getElementById('root'):在 HTML 檔案中找到<div id="root"></div> 這個容器,ID稱為root

ReactDOM.createRoot()

  • 建立一個 React 的根節點(Root),用來管理應用程式內部元件樹(component tree)的入口
  • Root 是 React 18 以後的新方法(Concurrent Mode)
    • 渲染過程可以被中斷再恢復(提高流暢度)

渲染 React 元件到畫面

root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

root.render(...)

  • 呼叫根物件的 render 方法,將指定的元件渲染到網頁上
  • <App /> 元件轉換成真實的 DOM 元素,並放到<div id="root">

<React.StrictMode>

  • 開發模式下的檢查工具
  • 在應用程式及其子元件中執行額外的檢查和警告:
    • 是否使用了已棄用的 API
    • 是否有不安全的生命週期方法
    • 是否有不符合最佳實踐的地方

<App />

  • 主要應用程式的元件
  • 包含了整個應用程式的架構和所有子元件,從<App />開始建立元件樹,再渲染所有子元件

下一篇
Day 2 | React入門:React 和 DOM 的關係
系列文
30天入門:學會第一個前端框架-React30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Wolke
iT邦研究生 4 級 ‧ 2025-10-10 17:27:20

版主您好!感謝您這篇關於 React 核心概念與運作原理的詳細說明,內容非常清楚易懂,對於初學者來說很有幫助。

您對 SPA 的解釋、元件化架構的優勢,以及 index.jsReactDOM.createRoot<React.StrictMode> 的作用都解析得很到位,搭配圖示讓複雜的觀念變得更直觀。我很欣賞您能將這些重要基礎知識整理得如此有條理。

想請問在您開發初期,有沒有遇到哪些關於元件拆分或 StrictMode 提醒方面,讓您印象深刻的經驗可以分享呢?

再次謝謝您的分享!也歡迎版主有空參考我的系列文「南桃AI重生記」:/n https://ithelp.ithome.com.tw/users/20046160/ironman/8311

Liu iT邦新手 5 級 ‧ 2025-10-13 20:24:01 檢舉

感謝您撥空留言~
確實在我開發初期時,我對元件拆分並沒有太多概念,一開始還想說:為什麼還要大費周章把原本 component 裡的程式碼特地拆分出去,不過後來實作後發現的確有這個必要除了可以讓邏輯功能更清楚地分開之外,程式碼的版面也能更乾淨、更好維護。
StrictMode 這部分,我是透過影片教學中才知道 useEffect 本身會執行兩次;當時也覺得不太明白這個用意,但是後來深入了解後,我才知道這個是 React 在開發模式下幫忙偵測副作用是否安全。
這兩個經驗真的是我當時開發時有的疑惑,不過在後來搞懂之後,會覺得學習 React 蠻有趣的,因為當中的設計真的有很多巧思。

我要留言

立即登入留言