모든 컴포넌트
MotionStream
몰려오는 스트리밍 글을 일정한 속도로 보여 주고, 밀리면 따라잡습니다.
웹React Native숫자와 글
직접 해 보기
가장 짧은 사용법
Answer.jsx<MotionStream text={answerSoFar} initial />
<MotionStream text={answerSoFar}>
{visible => <Markdown>{visible}</Markdown>}
</MotionStream>
대신 처리하는 일
- 몰려온 덩어리가 읽기 좋은 흐름이 됩니다. 글은 덩어리째가 아니라 초당
speed자로 드러납니다. - 밀린 글이 쌓이면 속도를 올려 약
catchUp밀리초 안에 보여 줍니다. - 이모지, 국기, 결합 문자는 쪼개지지 않고, 반만 받은 이모지는 나머지를 기다립니다.
- 답변이 다시 쓰이면 처음부터가 아니라 같은 앞부분에서 이어갑니다.
- 드러난 글자는 페이지에 바로 붙고, React는 1초에 몇 번만 렌더합니다.
이럴 때 쓰세요
- 채팅 도우미의 답변.
- 빌드나 배포 로그.
- 실시간 자막.
Props
| Prop | 타입 | 기본값 | 설명 |
|---|
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, 이벤트 핸들러를 평소처럼 쓸 수 있습니다.