Prezentare generală
Toast redă o notificare. Aplicația dvs. controlează când apare, poziția sa și când este eliminată.
Utilizare
Opțiuni vizuale
Comparați feedbackul neutru, de succes, de eroare, informativ și de avertizare cu același mesaj și același progres. Pentru notificările aplicației, încadrați aplicația înToastProvider, montați un Toaster în interiorul acestuia și utilizați useToast() din componentele descendente. Fiecare furnizor deține un stoc independent de notificări, contoare inverse și un ciclu de viață pentru închidere. Mai multe componente Toaster pot oglindi același furnizor.
Notificările aplicației
enqueueToast acceptă proprietăți Toast și un dedupeKey opțional și returnează ID-ul notificării. O cheie vizibilă corespunzătoare returnează ID-ul existent fără a adăuga altă notificare. updateToast({ id, ...changes }) actualizează acea notificare activă. closeToast(id) închide o notificare; closeToast() închide toate notificările vizibile din furnizor.
Furnizorul afișează implicit trei notificări vizibile. limit trebuie să fie un număr întreg pozitiv și se poate modifica în timp ce furnizorul este montat. Reducerea acestuia sau adăugarea peste acesta închide mai întâi cele mai vechi notificări vizibile. Mărirea acesteia lasă notificările existente neschimbate și nu restabilește notificările închise. Modificările de configurare păstrează stocarea, ID-urile rămase, ordinea și timpul rămas din numărătoarea inversă.
Ciclul de viață al Provider
Mai multe componente Toaster dintr-un Provider redau aceleași notificări. Actualizările și închiderea se aplică fiecărei oglinzi, iar fiecare notificare are o singură numărătoare inversă partajată. Trecerea cu cursorul sau focalizarea în interiorul oricărei oglinzi o întrerupe; aceasta reia după ce toate oglinzile le eliberează pe ambele. Montarea unui alt Toaster nu repornește numărătoarea inversă și nu creează un alt ciclu de viață al callback-ului. Utilizați provideri separați pentru cozi independente. Pentru notificările Provider, expirarea, butonul de închidere,closeToast și eliminarea din cauza limitei apelează cel mai recent onClose o singură dată. Notificarea este deja închisă când rulează callback-ul, astfel că actualizările și solicitările repetate de închidere pentru acel ID nu au niciun efect. onCancel rămâne un callback separat pentru acțiune și nu închide automat.
Notificările închise sunt inactive în timpul animațiilor de ieșire. Intrările lor sunt eliminate după ce toate oglinzile redate își finalizează operațiunea de ieșire sau sunt demontate. Demontarea ultimului Toaster elimină intrările închise și îngheață timpul rămas pentru notificările vizibile. Remontarea unui Toaster reia acel timp. Demontarea Provider elimină notificările sale și anulează numărătoarea inversă și operațiunea de ieșire fără a apela onClose. Operațiunile enqueueToast, updateToast și closeToast capturate din acel Provider nu au niciun efect după ce acesta este demontat.
getToastProps adaptează conținutul și prezentarea fiecărei notificări. Setați duration și progress în enqueueToast sau updateToast, astfel încât fiecare oglindă să partajeze aceeași configurație de temporizare. Suprascrierile existente ale temporizării prin getToastProps rămân acceptate când toate oglinzile returnează aceeași durată și același progres pentru o notificare. Provider păstrează ID-ul, handlerul de închidere și numărătoarea inversă partajată.
container selectează destinația portalului unui Toaster. Când este omis, acesta utilizează containerul temei înconjurătoare sau document.body. Un element explicit se redă acolo; null amână redarea. Notificările vizibile rămân în coadă, cu numărătorile inverse întrerupte cât timp nu este redat niciun Toaster. Portalurile păstrează tema și direcția înconjurătoare. Setați aria-label pentru fiecare Toaster, pentru a localiza numele implicit al regiunii, “Notificări”, și pentru a oferi nume adecvate regiunilor oglindite.
Actualizați o notificare în timp real
Utilizează ID-ul returnat deenqueueToast pentru a actualiza pe loc conținutul, starea feedbackului, acțiunile sau callbackurile. Actualizările păstrează ID-ul și poziția notificării. ID-urile necunoscute sau respinse nu au niciun efect, inclusiv în timp ce rulează animația de respingere. Fiecare apel useToast() vizează cel mai apropiat furnizor al său.
ToastUpdate necesită id și acceptă opțiuni Toast parțiale. Câmpurile omise își păstrează valorile curente. Valoarea explicită undefined golește un câmp opțional sau îi restabilește valoarea implicită a componentei, precum progress: undefined sau status: undefined. Transmite null pentru a elimina un slot de conținut, inclusiv description, icon sau action. Setarea cancelLabel: null ascunde controlul de anulare, păstrând în același timp funcția sa de apel invers. Modificările funcțiilor de apel invers se aplică notificării existente. dedupeKey aparține operației de adăugare în coadă și nu poate fi actualizată.
Temporizarea închiderii
Numărătoarea inversă este setată implicit la 6.000 de milisecunde. Se întrerupe cât timp indicatorul se află deasupra notificării toast sau focalizarea tastaturii este în interiorul acesteia și se reia doar după ce ambele încetează. Cu mai multe componente Toaster, starea de întrerupere este partajată între oglinzile acestora. Numărătoarea inversă vizuală urmărește timpul rămas până la închidere. Închiderea automată funcționează și atunci când mișcarea redusă dezactivează animația.
De exemplu,
updateToast({ id, children: 'Still saving' }) păstrează timpul rămas, în timp ce updateToast({ id, duration: 6000 }) îi oferă cititorului încă șase secunde. Aceste reguli se aplică notificării existente fără a-i modifica ID-ul sau poziția.
Notificare care poate fi închisă
onClose este apelat o dată de butonul de închidere sau când numărătoarea inversă se finalizează. Eliminați toast-ul în acel callback. Utilizați duration={0} pentru o notificare care rămâne deschisă până la închidere.
Progres și anulare
progress oferă un procent și dezactivează numărătoarea inversă. Eliminați-l după ce operațiunea se finalizează pentru a începe o durată nouă. Anularea apelează onCancel; componenta părinte gestionează anularea și eliminarea. cancelLabel acceptă un nod React pentru conținutul butonului. Elementele copil, description, icon și action acceptă, de asemenea, noduri React deținute de apelant. Utilizează controale Twenty pentru acțiuni interactive și furnizează-le numele accesibile.
Aspect și anunțuri
status acceptă neutral, info, success, warning sau error și are implicit valoarea neutral. Aceasta exprimă semnificația feedbackului și selectează pictograma și paleta temei. Toast are un singur aspect acceptat, astfel că nu expune nicio opțiune de variant pentru aspect sau de color pentru paletă. Utilizează icon pentru a înlocui pictograma, icon={null} pentru a o omite și iconLabel atunci când pictograma implicită are nevoie de propriul nume accesibil.
Rolul implicit este status, cu anunțuri politicoase. Utilizați role="alert" pentru feedback urgent. Setați cancelLabel și closeLabel pentru a localiza controalele și acordați suficient timp pentru a citi conținutul sau a interacționa cu acțiunile sale.
Proprietăți
Referința este generată din tipurile publice ale componentelor. Atributele native, stilurile, numele claselor, gestionarii de evenimente și referințele vizează rădăcina. Utilizeazărender pentru a compune un alt element sau o altă componentă, păstrând aceste proprietăți și referința. Portalurile Toaster moștenesc tema și direcția textului din jur.
ReactNode
Optional footer node, such as a Button with a caller-owned action.
ReactNode
implicit:"Cancel"
Cancel button content node. Defaults to Cancel. Pass null to hide the control.
ReactNode
Main message node. Callers own its content and accessible text.
string
Additional class names merged onto the root.
string
implicit:"Close"
Accessible name of the close button. Defaults to Close.
ReactNode
Optional supporting content node rendered below the message.
number
implicit:"6000"
Milliseconds before onClose is called, defaulting to 6000. Zero keeps the toast open. Changes restart the countdown; live updateToast duration patches restart it even when unchanged. Hover and keyboard focus pause it until both leave.
ReactNode
Leading icon node. Defaults to the status icon. Pass null to omit it.
string
Accessible name of the default icon. Without it, the icon is decorative.
(() => void)
Called when the cancel button is clicked. Providing it and renderable cancelLabel content shows the button.
(() => void)
For standalone Toast, called once per mount by the close button or expiry. For provider notifications, called once on close, expiry, closeToast, or limit eviction, after dismissal and before exit cleanup. Provider teardown does not call it.
number
Completion percentage. Providing it disables the countdown. Removing it starts a fresh duration.
Ref<HTMLDivElement>
Ref to the root div, or the element supplied through render.
RenderProp<Record<string, unknown>>
Element or callback composition for the root. Native props and the ref target the rendered element.
"error" | "info" | "neutral" | "success" | "warning"
implicit:"neutral"
Feedback meaning: neutral, info, success, warning, or error. Defaults to neutral and selects the icon and theme palette.
CSSProperties
Inline styles forwarded to the root.
ToastProvider
ReactNode
Application content and any Toasters sharing this provider’s independent notification store and lifecycle.
number
implicit:"3"
Reactive maximum number of visible toasts, defaulting to three. Must be a positive integer. Lowering it or adding above it dismisses the oldest visible notifications and calls their onClose once. Surviving IDs, order, and countdowns are preserved.
Toaster
Atributele div native, stilurile, numele de clase și referințele vizează regiunea de notificări.HTMLElement | null
Portal destination. Omit to use the theme container or document.body; null defers rendering. The provider retains visible notifications and pauses their countdowns while no Toaster is rendered.
((toast: ToastNotification) => Partial<Omit<ToastProps, "ref" | "id" | "onClose">>)
Adapts notification content and presentation. The provider owns id, dismissal, and the shared countdown. Set timing through enqueueToast or updateToast; duration and progress overrides must match across Toasters sharing a provider.
RenderProp<Record<string, unknown>>
Custom root element composed through Base UI.