useAutosize
Bir textarea'yı yazdıklarınıza göre en küçük ve en büyük yüksekliği arasında büyütür; metne hiç dokunmadan her değişikliği canlandırır.
pnpm dlx shadcn@latest add https://hextaui.com/r/use-autosize.jsonHook'u ve bağımlı olduğu her şeyi projenize ekler.
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
hooks/use-autosize.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
<Textarea autoResize> bu hook'u zaten kullanır. Sohbet yazma alanı veya satır içi düzenleyici gibi kendi <textarea> bileşeninizi işlerken onu kendiniz çağırın.
Her değişiklikte hook yüksekliği auto yapar, doğal scrollHeight değerini okur ve öğenin kendi CSS min-height ve max-height değerlerine sıkıştırır. Hepsi boyamadan önce olur, bu yüzden daralmış kareyi asla görmezsiniz. Sınırlar CSS'inizde kalır; böylece duyarlı olabilir veya satırları saymak için lh kullanabilir.
- Yükseklik değişiklikleri 180ms'de animasyonlanır ve animasyon sırasında gelen bir değişiklik geçerli yükseklikten başlar; böylece hızlı yazma asla zıplamaz. Azaltılmış harekette yükseklik anında değişir.
max-heightaşıldığında textarea kayar. Aksi halde kaydırma çubuğu gizli kalır; böylece her yeni satırda çakmaz.- Genişlik değiştiğinde yeniden uyum sağlar, çünkü farklı sarılan metin yüksekliği değiştirir.
windowüzerindeinputolayını dinler ve yalnızca ölçer. Değeri asla okumaz veya yazmaz; böylece tuş vuruşları hiç gecikmez veya düşmez.
Kontrollü değerler
Yazmak input tetikler ama koddan value ayarlamak tetiklemez. Değeri üçüncü argüman olarak verin; bir şablon eklediğinizde veya temizlediğinizde textarea yeniden uyum sağlar.
rows={1}veresize-noneayarlayın. Elle yeniden boyutlandırma tutamacı otomatik yükseklikle çatışır.enabled'ı kapatmak veya unmount etmek satır içi yüksekliği ve taşmayı kaldırır, boyutu CSS'inize geri verir.- Dokunmatik ekranlarda textarea'da en az 16px metin kullanın; aksi halde odaklanınca iOS yakınlaştırır.
| Prop | Tür | Varsayılan |
|---|---|---|
refBoyutlandırılacak textarea. | RefObject<HTMLTextAreaElement | null> | – |
enabledOtomatik boyutlandırılıp boyutlandırılmayacağı. | boolean | – |
valueKontrollü değer. Kontrolsüz textarea'lar için undefined verin. | unknown | – |
Textarea ve InputGroupTextarea.
- MotionHer bileşenin kullandığı yumuşatma eğrileri, süreler ve azaltılmış hareket denetimi; ayrıca boyut dönüşümleri ve kayan vurgular için hook'lar.
- InputÜç boyutlu, geçersiz ve salt okunur durumları, yerel doğrulama stilleri ve telefonların asla yakınlaştırmaması için 16px dokunmatik yazı tipi olan bir metin girişi.
- Input groupSimgeler, metin, düğmeler ya da klavye ipucu eklenmiş; tek kenarlık ve odak halkasını paylaşan bir input.
- TextareaYazdıklarınıza göre en az ve en çok satır sayısı arasında akıcı biçimde büyüyen çok satırlı metin; sayaçlar, doğrulama ve gönderme kısayolu içerir.