MotionStream
Gestreamde tekst die in een gelijkmatig tempo wordt onthuld en stoten bijbeent.
WebReact NativeGetallen en tekst
Probeer het
Voorbeeld voorbereiden…
Kortste gebruik
<MotionStream text={answerSoFar} initial />
<MotionStream text={answerSoFar}>
{visible => <Markdown>{visible}</Markdown>}
</MotionStream>Wat het voor je regelt
- Stoten worden leesbaar: tekst wordt onthuld met
speedtekens per seconde in plaats van in brokken. - Een achterstand versnelt de onthulling zodat die binnen ongeveer
catchUpmilliseconden zichtbaar is. - Emoji, vlaggen en combinerende tekens worden nooit gesplitst, en een half ontvangen emoji wacht op de rest.
- Een herschreven antwoord gaat verder vanaf het gedeelde begin in plaats van opnieuw te beginnen.
- Onthulde tekens gaan direct naar de pagina; React rendert maar een paar keer per seconde.
Gebruik het voor
- Het antwoord van een assistent in een chat.
- Een build- of deploylog.
- Live ondertitels.
Props
| Prop | Type | Standaard | Beschrijving |
|---|---|---|---|
text | string | —verplicht | De tekst tot nu toe. Groeiende tekst wordt gelijkmatig onthuld; een herschrijving gaat verder vanaf het gedeelde begin. |
speed | number | 90 | Basistempo van onthullen in tekens per seconde. |
catchUp | number | 900 | Een achterstand wordt binnen ongeveer zoveel milliseconden onthuld door te versnellen. |
initial | boolean | false | Onthul ook de tekst die bij de mount al aanwezig is (anders verschijnt die direct). |
effect | 'fade' | 'none' | 'fade' | fade laat nieuwe tekens infaden; none toont ze direct. |
children | (visible: string) => ReactNode | Een functie die de getimede tekst krijgt, bijvoorbeeld om Markdown te renderen. | |
as | element | 'span' | Het element dat wordt gerenderd. |
onMotionComplete | (text) => void | Draait elke keer dat de onthulling text heeft bijgebeend. |
Andere props gaan naar het gerenderde element, dus className, style en event handlers werken zoals gewoonlijk.
Web en React Native
Op het web faden nieuwe tekens in (effect="fade") en worden ze samengevoegd tot gewone, selecteerbare tekst. Een functie als kind krijgt de getimede string voor Markdown, hooguit om het andere frame. In een verborgen tabblad wordt alles in één keer getoond.
In React Native is de tekst een echte Text en verschijnt hij zonder fade.