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 11

[Day 11] useTimeout 的測試

來寫useTimeout的測試吧 這個測試滿簡單的,主要要測試三點1.可以再秒數後執行callback function2.如果沒設定秒數就不會執行functi...

DAY 12

[Day 12] useDebounce介紹

debounce 是一種程式設計模式,它用於減少一些特定函數的執行頻率。當一個持續觸發的事件(例如鍵盤敲擊或窗口大小改變)被連續觸發時,debounce 可以延...

DAY 13

[Day 13] useDebounce測試

我們要測試四件事: 應該要到設定的時間才執行 測試重複調用,應該只能調用一次 測試參數傳遞沒有問題 測試組件卸載的時候不應該執行 import { rend...

DAY 14

[Day 14] 常常使用的useOutsideClick

這個是我在第一份工作時學到的,非常方便,尤其是在dropdown、popup、modal等常常使用,可以讓你點擊空白區域關閉,會回傳一個ref讓你可以放在com...

DAY 15

[Day 15] 今天換個方式測試useOutsideClick吧

我們來先做一個component,模擬這個情況吧 import * as React from 'react'; import { useOutsideClic...

DAY 16

[Day 16] 使用複製文字功能吧useCopyToClipboard

我想要設定複製文字功能回傳兩個值,一個是複製是否完成,一個是複製方法的函數 複製文字有兩種方法 第一種,新型瀏覽器支援的複製方法 await navigato...

DAY 17

[Day 17] useCopyToClip測試

我們會測試五種情況 a. 測試初始狀態 test("should use clipboard", () => { const {...

DAY 18

[Day 18] useThrottle 製作

useThrottle 節流是什麼 節流(Throttling)是一種在高頻事件觸發時,降低事件處理函數執行頻率的技術,通常用於優化性能,節流可以幫助以下四點:...

DAY 19

[Day 19] useThrottle 測試

經過前面寫過那麼多種類的測試了,應該很簡單了,可以自己先試試看 簡單來說,我們要測試在時間內點擊很多次會不會只call一次 import { renderHoo...

DAY 20

[Day 20] useUploadProgress取得上傳進度條

我今天突然想要做一個上傳文件的進度條,我平常都用Axios來寫,所以這次就用axios來寫吧 他主要有兩個回傳值,一個是進度,一個是上傳函數,使用上傳函數上傳,...