iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
Modern Web

React進階班,用typescript與jest製作自己的custom hooks庫 系列

概述:
這個主題是在從剛學React到精熟必經過程,在透過TypeScript加強React開發的品質和效率。會講解如何建立自己的自定義Hooks庫,以及如何使用單元測試來驗證這些Hooks的功能。從理論知識到實務操作,希望讀完可以讓有一定基礎的React工程師學習到更多知識。

30天的規劃:
目前是規劃會從最簡單的useFetch,useLocalStorage,useClickOutside慢慢的到useDebounce等等,可能會有大約20~30個custom hooks練習,使用typescript開發並且教學如何使用unit test去做測試.

鐵人鍊成 | 共 30 篇文章 | 12 人訂閱 訂閱系列文 RSS系列文
DAY 21

[Day 21] useUploadProgress測試

我們要測試兩件事 成功時progress要變成100% 失敗時progress會變成0% import { renderHook, act, waitFor...

DAY 22

[Day 22] useIntersectionObserver監控畫面

我本來想要講解IntersectionObserver這個api的,但是我覺得莫力全前輩之前寫的文章更好,所以決定直接放他的文章連結,他講解得非常清楚,如果不知...

DAY 23

[Day 23] useIntersectionObserver測試

我們這次的測試目標只有兩個 第一個測試:觀察目標元素當掛載時 測試當元件掛載(mount)時,IntersectionObserver 是否開始觀察(obser...

DAY 24

[Day 24] useInterval 製作

剩最後幾天了,今天講最後一個hook,接下來應該會用一個實際的小project來實戰練習 這個 hook 可以讓你在指定的時間間隔重複地執行一個回調函數,它的功...

DAY 25

[Day 25] useInterval測試

我們來寫三個測試 驗證給定延遲後是否有呼叫回呼函式。 驗證更改延遲是否會更改間隔。 驗證如果延遲是**null**,則不應呼叫回呼函式。 import {...

DAY 26

[Day 26] 實戰時間useLogin

我最近剛好有個想做的sideProject 第一件事我想先做一個登入的地方 我們先做一個Login 的,我是用shadcn+tailwind css做的 imp...

DAY 27

[Day 27] useLogin test

首先我們要測試昨天的Login 我們要測試login function 沒有問題 我們要測試沒有放帳號或密碼要跳錯誤 如果有Error要回傳Error im...

DAY 28

[Day 28] useIntersection實戰 做出infinite scroll吧

為了方便,我今天找了一段時間,找到一個不用api key的免費Api,並且可以在後面更換postId,我們就可以假設他是像page的東西,他每一個postId會...

DAY 29

[Day 29] 實戰useIntersection測試

我們主要就測兩個功能: initial render有正確呼叫useEffect call api intersection 有讓PostId增加一 一開始...

DAY 30

[Day 30] 懶得每次都npm test,用Husky幫忙吧 && 結語

我們之前每次要測試時,都要terminal打npm test,這樣很麻煩誒,那我們有沒有更好的辦法呢,答案就是用Husky來幫我們拉 Husky 是一個在 Ja...