useDelayedLoading
Yükleme durumunu yalnızca iş gerçekten yavaşken gösterir, sonra hiç titremeyecek kadar uzun süre açık tutar.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-delayed-loading.jsonHook'u ve bağımlı olduğu her şeyi projenize ekler.
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
hooks/use-delayed-loading.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Ham yükleme bayrağını verin ve döndürdüğü boolean'dan işleyin. Sıcak bir bağlantıdaki çoğu istek 150ms'den kısa sürede biter. Bunlar için spinner göstermek hiçbir şey göstermemekten kötüdür: bir iki kare çakar ve ilerleme değil bir aksaklık gibi okunur.
Hook iki kural uygular. Bir şey göstermeden önce delay kadar bekler; böylece daha önce biten iş hiç yükleme durumu göstermez. Gösterge görünür olduktan sonra en az minDuration kalır; böylece birkaç kare içinde belirip kaybolamaz.
| İş şu kadar sürer | Açıklama |
|---|---|
80ms | Hiçbir şey gösterilmez. |
250ms | 150ms'de gösterilir ve 400ms asgari süreyle 550ms'e kadar tutulur. |
900ms | 150ms'de gösterilir ve iş biter bitmez gizlenir. |
400ms asgari süre kasıtlı bir durum olarak algılanacak kadar uzun, kimseyi yavaşlatmayacak kadar kısadır.
- Gösterge hâlâ görünürken
loadingyeniden açılırsa basitçe görünür kalır. Gizle ve yeniden göster yoktur. - Girdiler değiştiğinde veya bileşen unmount olduğunda zamanlayıcılar temizlenir; böylece hiçbir şey gittikten sonra durumu güncellemez.
- Sunucuda ve ilk işleme sırasında
falsedöndürür; böylece hydration uyuşmazlığı eklemez.
Skeleton'lar
Skeleton'lar içeriğin yerini alır, bu yüzden çakma bir spinner'dan bile daha rahatsız edicidir. Burada ilk yükleme yavaştır ve skeleton'u gösterir. Sonraki yüklemeler önbellekten gelir ve hiç göstermez.
Skeleton'lar veya bindirmeler gibi ekranın çoğunu kaplayan göstergeler için delay değerini yükseltin. Ödeme gibi her beklemenin onaylanması gereken eylemler için 0'a doğru düşürün. minDuration değerini yaklaşık 300ms üzerinde tutun.
<Spinner loading={...} />ve<Button loading>bu zamanlamaları zaten kullanır. Başka bir şey işlediğinizde hook'a başvurun.- Düzen göstergenin belirmesiyle kaymasın diye, örneklerdeki gibi, göstergenin alacağı alanı koruyun.
- Bir
aria-busyveya durum mesajıyla birlikte kullanın. Hook yalnızca görsel olarak neyin gösterileceğine karar verir.
| Prop | Tür | Varsayılan |
|---|---|---|
loadingİşin şu anda sürüp sürmediği. | boolean | – |
options.delayYükleme durumunu göstermeden önce beklenecek milisaniye. | number | 150 |
options.minDurationYükleme durumu gösterildikten sonra görünür kalacağı asgari milisaniye. | number | 400 |
| Döndürür | Açıklama |
|---|---|
boolean | Yükleme durumunun gösterilip gösterilmeyeceği. Sunucuda her zaman false. |
loading prop'u üzerinden Spinner.