DoubleTian-tw / pokemon-Gym

https://pokemon-gym.vercel.app/
9 stars 1 forks source link

大概的 react render 基本原理與問題處理 #8

Open QzCurious opened 7 months ago

QzCurious commented 7 months ago

什麼時候會 re-render

如何避免 re-render

要做什麼

QzCurious commented 7 months ago

useState 可以不用全部都放在同一個地方,每個 component 都可以有自己的 useState。全部都放在一起很容易造成過多多餘的 re-render,且增加程式碼回追的成本

HeroProvider 就是個可被拆分的 useState 大集合

https://github.com/DoubleTian-tw/pokemon-Gym/blob/7b4800469c7dbbcf2b6482d44610801880ebb7dd/src/components/Hero/useHeroContext.jsx#L17-L341

QzCurious commented 6 months ago

https://www.youtube.com/watch?v=NsFmOttIW9Y&ab_channel=JackHerrington

Jack 的這隻影片用很實際但又直觀的方式來看 re-render 的影響 (雖然我從來不記得他叫 Jack)

一些我覺得你多花點力氣也要看完(或看懂)的:

剛好之前有問到為什麼、什麼時候要導入 global state management library,6:41 以簡單又實際的範例演示如何使用 zustand 解決。當然,每個人遇到的狀況不一樣,不見得每每都要做效能最佳化,但把概念學起來,需要優化時我們才比較有解決方向