Сплески перетворюються на читання: текст розкривається зі швидкістю speed символів на секунду, а не шматками.
Накопичений текст пришвидшує розкриття, щоб з’явитися приблизно за catchUp мілісекунд.
Емодзі, прапори й комбіновані знаки ніколи не розриваються, а напівотриманий емодзі чекає на решту.
Переписана відповідь продовжується зі спільного початку, а не починається заново.
Розкриті символи одразу потрапляють на сторінку; React рендерить лише кілька разів на секунду.
Для чого підходить
Відповідь асистента в чаті.
Лог збирання чи деплою.
Живі субтитри.
Props
Проп
Тип
Типово
Опис
text
string
—обов’язково
Текст на цей момент. Текст, що росте, розкривається в рівному темпі; переписаний продовжується зі спільного початку.
speed
number
90
Базова швидкість розкриття в символах на секунду.
catchUp
number
900
Накопичений текст розкривається приблизно за стільки мілісекунд за рахунок пришвидшення.
initial
boolean
false
Розкривати й текст, наявний під час монтування (інакше він показується одразу).
effect
'fade' | 'none'
'fade'
fade плавно проявляє нові символи; none показує їх одразу.
children
(visible: string) => ReactNode
Функція, що отримує текст у потрібному темпі, наприклад для рендеру Markdown.
as
element
'span'
Елемент для рендеру.
onMotionComplete
(text) => void
Виконується щоразу, коли розкриття наздоганяє text.
Решта props передається відрендереному елементу, тож className, style і обробники подій працюють як завжди.
Веб і React Native
У вебі нові символи плавно з’являються (effect="fade") і зливаються у звичайний виділюваний текст. Дочірня функція отримує текст у потрібному темпі для Markdown — не частіше ніж через кадр. У прихованій вкладці все показується одразу.
У React Native текст — справжній Text і з’являється без згасання.