iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Modern Web

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

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

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

【 Day 20 】方向鍵會動了,焦點該在誰身上?|互動行為(一)

從「遠端世界」到「瀏覽器 API」,這四個領域包起來的,都是畫面上看不見的東西:一份遠端資料、一個 store、表單裡的值、localStorage 的一個 k...

2026-10-05 ‧ 由 zxlee 分享
DAY 22

【 Day 21 】分層之後,「要切在哪一層」這個決定歸誰?|互動行為(二)

昨天我們照 Downshift 的 useSelect 臨摹了一個下拉選單:一個 Hook 交回一包 prop getter,呼叫端把它們展開到自己寫的元素上。...

2026-10-06 ‧ 由 zxlee 分享
DAY 23

【 Day 22 】用了元件樹,為什麼還需要一個把它打洞的 API?|互動行為(三完)

過去兩天,我們把同一份焦點合約,用兩種形狀交了出去。Day 20 照 Downshift 的 useSelect,由一個 Hook 交回一包 prop gett...

2026-10-07 ‧ 由 zxlee 分享
DAY 24

【 Day 23 】為什麼我剛畫出來的東西,會讓我剛算好的位置變成錯的?|真實 DOM(一)

在「互動行為」的三天裡,函式庫替我們拿走了不少決定:焦點在誰身上、方向鍵往哪裡走、合約怎麼接到元素上。拿走的多寡不同,但 DOM 最後長什麼樣子,大致上還是由呼...

2026-10-08 ‧ 由 zxlee 分享
DAY 25

【 Day 24 】誰被觀察?量到的尺寸又怎麼記?|真實 DOM(二)

昨天,我們讓 createFixedList 在瀏覽器渲染之前就替每一列算好位置。不過,第 3 列一折行,兩列就重疊了。它從瀏覽器拿到的只有 scrollTop...

2026-10-09 ‧ 由 zxlee 分享
DAY 26

【 Day 25 】量到不一樣之後,捲動位置該不該補償?|真實 DOM(三)

昨天,我們讓清單自己去量每一列的實際高度。TanStack Virtual 讓每一列各自被觀察,量到的尺寸一列記一筆;react-virtuoso 只觀察裝著列...

2026-10-10 ‧ 由 zxlee 分享
DAY 27

【 Day 26 】量了又畫、畫了又量,迴圈在哪裡停下來?|真實 DOM(四完)

過去三天,我們從一份二十列的清單出發,探索了三個問題:為什麼剛畫出來的東西,會讓剛算好的位置變成錯的;誰被觀察、量到的尺寸又怎麼記;以及量到不一樣之後,捲動位置...

2026-10-11 ‧ 由 zxlee 分享
DAY 28

【 Day 27 】六個問題問完了,重複出現的是哪幾個詞?

從 Day 04 到昨天,我們一次只順著一個問題往下走。每個領域的第一天,先把那個領域的問題寫成一句話;最後一天,再回頭看這幾天得到的答案。 昨天,真實 DOM...

2026-10-12 ‧ 由 zxlee 分享
DAY 29

【 Day 28 】同一個問法,換了複雜度,答案會換形狀嗎?

昨天我們把六個領域的問題句並排,從裡面找出了四條軸。訂閱在樞紐之前,就建立了三種問法;失效則走過樞紐,到了真實 DOM,還在增加需要處理的情境。 這兩條軸,都是...

2026-10-13 ‧ 由 zxlee 分享