Tous les composants

MotionStream

Du texte en streaming révélé à un rythme régulier, qui rattrape son retard en cas de rafale.

WebReact NativeNombres et texte

Essayer

Préparation de l’exemple…

Usage minimal

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

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

Ce qu’il gère pour vous

  • Les rafales deviennent lisibles : le texte apparaît à speed caractères par seconde au lieu d’arriver par blocs.
  • En cas de retard accumulé, le rythme s’accélère pour tout afficher en environ catchUp millisecondes.
  • Les emojis, les drapeaux et les signes combinants ne sont jamais coupés, et un emoji reçu à moitié attend la suite.
  • Une réponse réécrite repart du début commun au lieu de tout recommencer.
  • Les caractères révélés vont directement dans la page ; React ne se rend que quelques fois par seconde.

À utiliser pour

  • La réponse d’un assistant dans un chat.
  • Un log de build ou de déploiement.
  • Des sous-titres en direct.

Props

PropTypeDéfautDescription
textstring—obligatoireLe texte reçu jusqu’ici. Un texte qui s’allonge est révélé à un rythme régulier ; une réécriture repart du début commun.
speednumber90Rythme de base de la révélation, en caractères par seconde.
catchUpnumber900Un retard accumulé est révélé en environ autant de millisecondes, en accélérant.
initialbooleanfalseRévéler aussi le texte présent au montage (sinon il s’affiche aussitôt).
effect'fade' | 'none''fade'fade fait apparaître les nouveaux caractères en fondu ; none les affiche directement.
children(visible: string) => ReactNodeUne fonction qui reçoit le texte rythmé, par exemple pour rendre du Markdown.
aselement'span'L’élément à rendre.
onMotionComplete(text) => voidS’exécute chaque fois que la révélation rattrape text.

Les autres props vont à l’élément rendu : className, style et les gestionnaires d’événements fonctionnent comme d’habitude.

Web et React Native

Sur le web, les nouveaux caractères apparaissent en fondu (effect="fade") puis sont intégrés dans du texte ordinaire et sélectionnable. Un enfant fonction reçoit la chaîne rythmée pour du Markdown, au plus une image sur deux. Dans un onglet masqué, tout s’affiche d’un coup.

Sur React Native, le texte est un vrai Text et apparaît sans fondu.

Utilisé dans ces exemples

Rechercher

Tapez pour rechercher dans la documentation.