iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Modern Web

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

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

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

【 Day 10 】如果訂閱的單位不是切片,而是圖上的節點?|共享狀態(三)

昨天我們用選擇器告訴 React 元件在乎哪一塊,ThemeLabel 從此不再跟著購物車重新渲染。但 store 的通知方式沒有變:每一次寫入,每個選擇器還是...

2026-09-25 ‧ 由 zxlee 分享
DAY 12

【 Day 11 】依賴一定要被描述嗎?|共享狀態(四完)

過去兩天,不管是選擇器還是節點,我們都是先把依賴寫下來。store 不會自己知道誰在乎什麼,所以呼叫端需要先告訴它。 可是 Valtio 看起來不是這樣。 它既...

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

【 Day 12 】每次擊鍵,整份表單都得重算一次嗎?|使用者輸入(一)

探索共享狀態的那四天,每一次寫入都是按一下按鈕:加一件、改名字、改內容。一次點擊,一次通知,誰該被通知,我們可以一個一個比對。 但表單不是這樣。使用者在欄位裡打...

2026-09-27 ‧ 由 zxlee 分享
DAY 14

【 Day 13 】訂閱關係,是誰寫下的?|使用者輸入(二)

昨天我們把表單的狀態從 SignupForm 身上搬了出去,放進一個活在 React 外面的 form control。表單本體不再重新渲染,但在姓名欄打一個字...

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

【 Day 14 】高頻之下,「誰該被通知」還是效能問題嗎?|使用者輸入(三)

昨天的實驗裡,姓名欄只打了兩個字:先打 L,再打 e。兩種訂閱方式都讓送出按鈕只在 isDirty 變了的時候重新渲染。 如果是一次按鈕點擊,通知錯了人,也許只...

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

【 Day 15 】提交這件事,真的需要持續訂閱嗎?|使用者輸入(四完)

過去三天,我們一直在回答同一個問題:每次擊鍵,誰該被通知?Day 12 把狀態從表單本體搬進 control;Day 13 看了訂閱關係的兩種寫法,RHF 讀了...

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

【 Day 16 】兩個元件用同一個 key,為什麼一邊改、另一邊不知道?|瀏覽器 API(一)

💡 命名微調通知:從今天起,我會在標題標注各領域探索的進度,方便用來文章導航 從「遠端世界」、「共享狀態」,再到「使用者輸入」領域探索的過程中,有沒有發現我...

2026-10-01 ‧ 由 zxlee 分享
DAY 18

【 Day 17 】呼叫端還需要知道什麼?|瀏覽器 API(二)

昨天我們從 useLocalStorage 這個 Hook,來看 react-use、usehooks-ts 與 @react-hookz/web 的實作概念,...

2026-10-02 ‧ 由 zxlee 分享
DAY 19

【 Day 18 】那,深模組有沒有代價?|瀏覽器 API(三)

在昨天,我們透過 react-use、usehooks-ts 與 @react-hookz/web 三個函式庫,看到同樣封裝瀏覽器 localStorage 的...

2026-10-03 ‧ 由 zxlee 分享
DAY 20

【 Day 19 】什麼時候,正確答案是不要寫這個 Hook?|瀏覽器 API(四完)

過去三天,我們從 localStorage 出發,探索了三個問題:兩個元件用同一個 key,為什麼一邊改、另一邊不知道;把它包成 Hook 之後,呼叫端還需要知...

2026-10-04 ‧ 由 zxlee 分享