MotionStream
Teks mengalir yang ditampilkan dengan tempo stabil dan menyusul saat ada lonjakan.
WebReact NativeAngka dan teks
Coba
Menyiapkan contoh…
Penggunaan terpendek
<MotionStream text={answerSoFar} initial />
<MotionStream text={answerSoFar}>
{visible => <Markdown>{visible}</Markdown>}
</MotionStream>Yang ditanganinya untuk Anda
- Lonjakan menjadi bacaan: teks ditampilkan
speedkarakter per detik, bukan per potongan. - Tumpukan antrean mempercepat tampilan agar terlihat dalam sekitar
catchUpmilidetik. - Emoji, bendera, dan tanda gabung tidak pernah terpecah, dan emoji yang baru diterima separuh menunggu sisanya.
- Jawaban yang ditulis ulang melanjutkan dari awal yang sama, bukan mulai dari nol.
- Karakter yang ditampilkan langsung masuk ke halaman; React hanya merender beberapa kali per detik.
Gunakan untuk
- Jawaban asisten dalam obrolan.
- Log build atau deploy.
- Teks terjemahan langsung.
Props
| Prop | Tipe | Bawaan | Deskripsi |
|---|---|---|---|
text | string | —wajib | Teks sejauh ini. Teks yang bertambah ditampilkan dengan tempo stabil; teks yang ditulis ulang melanjutkan dari awal yang sama. |
speed | number | 90 | Laju tampilan dasar dalam karakter per detik. |
catchUp | number | 900 | Tumpukan antrean ditampilkan dalam sekitar sekian milidetik dengan mempercepat. |
initial | boolean | false | Tampilkan perlahan juga teks yang ada saat mount (jika tidak, langsung tampil). |
effect | 'fade' | 'none' | 'fade' | fade memunculkan karakter baru perlahan; none menampilkannya langsung. |
children | (visible: string) => ReactNode | Fungsi yang menerima teks bertempo, misalnya untuk merender Markdown. | |
as | element | 'span' | Elemen yang dirender. |
onMotionComplete | (text) => void | Berjalan setiap kali tampilan menyusul text. |
Semua props lain diteruskan ke elemen yang dirender, jadi className, style, dan event handler bekerja seperti biasa.
Web dan React Native
Di web, karakter baru muncul perlahan (effect="fade") dan dilebur ke teks biasa yang bisa dipilih. Child berupa fungsi menerima string bertempo untuk Markdown, paling sering setiap dua frame. Di tab tersembunyi semuanya tampil sekaligus.
Di React Native, teksnya adalah Text sungguhan dan muncul tanpa efek pudar.