getir.com-react-tailwind icon indicating copy to clipboard operation
getir.com-react-tailwind copied to clipboard

Improvement: Better use of lazy initialize state for Campaigns Container

Open buraksaraloglu opened this issue 3 years ago • 2 comments

Şu anki halinde, sayfayı initial render olarak boş array'i mapliyor. İlk renderdan sonra useEffect devreye girip json'dan gelen Banners datasını state'e atıyor. Bu da 2. render'ı tetikliyor. Güncelleme yaptığım yöntemle 2 kez render etmesini engellemek için state'in içerisine direkt json'dan gelen veriyi dolduruyoruz.

Detaylı bilgi: https://kentcdodds.com/blog/use-state-lazy-initialization-and-function-updates

buraksaraloglu avatar Aug 27 '21 10:08 buraksaraloglu

api requesti simüle ediyordum aslında orada sonuçta isteği gidip alması için bir süre geçecek her türlü :) belki useMemo kullanılabilir?

tayfunerbilen avatar Aug 27 '21 16:08 tayfunerbilen

useEffect'in olayı tam olarak isteği gidip alması için geçen bir süre olarak tanımlanamaz. Yani siz state'i initialize ederken de api request atıp response'u direkt state'e yazabilirsiniz. Bu önerilmiyor çünkü state oluşturmak sync bir metod ve state oluşturulana kadar render'ı blocklamaya gerek yok. Söylediğiniz gibi useMemo şu anki durumda güzel bir kullanım yeri olurdu. Kodu incelerken response datasını useEffect'te attığınızı görünce yazmak istedim. Videonuz varsa izlemedim o yüzden fikrinizi tam bilmiyordum. Elinize sağlık. Güzel bir çalışma olmuş.

buraksaraloglu avatar Aug 27 '21 18:08 buraksaraloglu