Todos los componentes

MotionStream

Texto en streaming mostrado a un ritmo constante que se pone al día con las ráfagas.

WebReact NativeNúmeros y texto

Pruébalo

Preparando el ejemplo…

Uso mínimo

Answer.jsx
<MotionStream text={answerSoFar} initial />

<MotionStream text={answerSoFar}>
  {visible => <Markdown>{visible}</Markdown>}
</MotionStream>

Lo que resuelve por ti

  • Las ráfagas se vuelven lectura: el texto aparece a speed caracteres por segundo en lugar de a trozos.
  • Si se acumula texto, el ritmo se acelera para mostrarlo en unos catchUp milisegundos.
  • Los emojis, las banderas y las marcas combinadas nunca se parten, y un emoji recibido a medias espera al resto.
  • Una respuesta reescrita continúa desde el inicio común en lugar de empezar de nuevo.
  • Los caracteres mostrados van directamente a la página; React solo se renderiza unas pocas veces por segundo.

Úsalo para

  • La respuesta de un asistente en un chat.
  • Un log de build o de despliegue.
  • Subtítulos en vivo.

Props

PropTipoPor defectoDescripción
textstring—obligatoriaEl texto hasta ahora. El texto que crece aparece a un ritmo constante; una reescritura continúa desde el inicio común.
speednumber90Ritmo base de revelado, en caracteres por segundo.
catchUpnumber900Lo acumulado se revela en unos tantos milisegundos acelerando el ritmo.
initialbooleanfalseRevela también el texto presente al montar (si no, se muestra de inmediato).
effect'fade' | 'none''fade'fade hace aparecer los caracteres nuevos con un fundido; none los muestra directamente.
children(visible: string) => ReactNodeUna función que recibe el texto dosificado, por ejemplo para renderizar Markdown.
aselement'span'El elemento que se renderiza.
onMotionComplete(text) => voidSe ejecuta cada vez que el revelado alcanza a text.

Las demás props van al elemento renderizado, así que className, style y los manejadores de eventos funcionan como siempre.

Web y React Native

En la web, los caracteres nuevos aparecen con un fundido (effect="fade") y se integran en texto normal y seleccionable. Un hijo función recibe la cadena dosificada para Markdown, como mucho cada dos fotogramas. En una pestaña oculta todo se muestra de golpe.

En React Native, el texto es un Text real y aparece sin fundido.

Se usa en estos ejemplos

Buscar

Escribe para buscar en la documentación.