Все компоненты

MotionStream

Потоковый текст, раскрываемый в ровном темпе, который догоняет всплески.

ВебReact NativeЧисла и текст

Попробуйте

Подготовка примера…

Кратчайшее использование

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

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

Что он берёт на себя

  • Всплески превращаются в чтение: текст раскрывается со скоростью speed символов в секунду, а не кусками.
  • Накопившийся текст ускоряет раскрытие, чтобы показаться примерно за catchUp миллисекунд.
  • Эмодзи, флаги и комбинируемые знаки никогда не разрываются, а наполовину полученный эмодзи ждёт остальное.
  • Переписанный ответ продолжается с общего начала, а не начинается заново.
  • Раскрытые символы сразу попадают на страницу; React рендерит лишь несколько раз в секунду.

Для чего подходит

  • Ответ ассистента в чате.
  • Лог сборки или деплоя.
  • Живые субтитры.

Props

ПропТипПо умолчаниюОписание
textstring—обязательноТекст на данный момент. Растущий текст раскрывается в ровном темпе; переписанный продолжается с общего начала.
speednumber90Базовая скорость раскрытия в символах в секунду.
catchUpnumber900Накопившийся текст раскрывается примерно за столько миллисекунд за счёт ускорения.
initialbooleanfalseРаскрывать и текст, присутствующий при монтировании (иначе он показывается сразу).
effect'fade' | 'none''fade'fade плавно проявляет новые символы; none показывает их сразу.
children(visible: string) => ReactNodeФункция, получающая текст в нужном темпе, например для рендера Markdown.
aselement'span'Элемент для рендера.
onMotionComplete(text) => voidВыполняется всякий раз, когда раскрытие догоняет text.

Остальные props передаются отрендеренному элементу, поэтому className, style и обработчики событий работают как обычно.

Веб и React Native

В вебе новые символы плавно появляются (effect="fade") и сливаются в обычный выделяемый текст. Дочерняя функция получает текст в нужном темпе для Markdown — не чаще чем через кадр. В скрытой вкладке всё показывается сразу.

В React Native текст — настоящий Text и появляется без затухания.

Используется в примерах

Поиск

Начните вводить, чтобы искать в документации.