React - useEffect cleanup with fetch abort
前言 前陣子在公司開發一個搜尋網站,參考第三方開源專案 searchkit 的設計架構,嘗試使用 GraphQL 搭配 Elasticsearch 來透過一次 request 獲取大量 resource 的搜尋資料,前端則使用 React 搭建 SPA 網頁,但在使用頁籤跳頁時卻出現 React 的警告: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function. 大概知道是 useEffect 要 cleanup 的問題,但卻不知道 callback funtion 該怎麼做,debug 了好一陣子也未果,後來因緣際會下看到幾篇技術文章才恍然大悟,原來 fetch 就有 abort 可以處理,因此簡單以 pagination 的情境來重現上述問題,順手作個紀錄 重現問題 為了重現當初遇到的問題,找了 jsonplaceholder 上的 open data,來做一個文章(posts) pagination 的 demo...