iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Modern Web

再造輪子:30 天臨摹 React Hook 函式庫,探索背後的設計哲學 系列

「別重複造輪子」是效率的建議,不是學習的建議。三十天,我挑六個 React 每天都會碰到的設計問題,每個問題找幾個成熟函式庫當作不同的答案,寫最小的臨摹實作、用同一組測試逼出分歧,再探問:為什麼它們選得不一樣?
我希望的不是透過這個主題介紹函式庫,而是重建其中的設計判斷。

參賽天數 7 天 | 共 7 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 1

【 Day 00 】寫在再造輪子之前

在學習程式的過程中,經常聽到一句話「別重複造輪子。」因為這樣能夠把時間、力氣留給真正值得煩惱的問題。別人寫過、驗證過的邏輯,通常比自己埋首苦幹半天寫出來的更快、...

2026-09-15 ‧ 由 zxlee 分享
DAY 2

【 Day 01 】只讀原始碼,究竟會漏掉什麼?

昨天我在前言提到,這個系列會用「臨摹」的方式來理解函式庫。但如果原始碼就公開在那裡,為什麼不是打開來讀過一遍就好?今天想先用一個不到十行的 Hook,談談我對這...

2026-09-16 ‧ 由 zxlee 分享
DAY 3

【 Day 02 】一個 Hook 的複雜度,到底從哪裡來?

昨天那個不到十行的 usePrevious,最後停在一個沒有答案的地方:我們每天都說某個 Hook 很複雜,卻很少說得清楚,那個複雜度到底是從哪裡長出來的。 「...

2026-09-17 ‧ 由 zxlee 分享
DAY 4

【 Day 03 】React 給 Hook 設計者設下了哪些約束?

昨天把臨摹要用的三把尺,也就是複雜度、資訊隱藏以及深模組建立了起來。只是我們要衡量的對象是 React Hook,它不是一般模組,它活在 React 裡,所以必...

2026-09-18 ‧ 由 zxlee 分享
DAY 5

【 Day 04 】兩個元件要同一份遠端資料,這份資料是誰的?

前幾天談的是臨摹的理由,以及 React 對 Hook 的約束。今天讓我們進入六個設計問題的第一關:遠端資料的複雜度 —— 這份資料是誰的? 遠端世界 ✍️ ·...

2026-09-19 ‧ 由 zxlee 分享
DAY 6

【 Day 05 】這份資料什麼時候算舊,什麼時候該消失?

昨天我們把遠端資料搬到了元件外面的一個 Map 上,讓兩個元件共用同一份,這個 Map 叫做快取。然而,它不知道什麼時候該刪去裡面的請求,因為它不知道還有沒有元...

2026-09-20 ‧ 由 zxlee 分享
DAY 7

【 Day 06 】寫入之後,誰負責讓其他人知道?

昨天我們把「舊了」與「該消失了」拆成兩條互不干涉的線,分別從「資料回來」與「沒人讀資料」開始計時,時間一到,就標記過期或刪除。 可是有時候我不希望等。比如我剛剛...

2026-09-21 ‧ 由 zxlee 分享