콘텐츠로 이동
본문으로 건너뛰기
Animated Fluent Emojis
메뉴
한국어

Next.js에서 사용하기

App Router에서 Emoji를 렌더링합니다. Server Component에서도 동작합니다.

스타일시트를 한 번만 import하기

스타일시트에는 애니메이션 keyframe이 들어 있습니다. 이것이 없으면 emoji는 정적인 sprite sheet로 보입니다. 루트 레이아웃에서 한 번만 import하세요.

import 'animated-fluent-emojis/style.css'
export default function RootLayout({ children }) {
return (
<html lang="en">
<body>{children}</body>
</html>
)
}

Server Component에서 Emoji 사용하기

번들이 "use client";로 시작하므로, 래퍼 파일 없이 Server Component에서 Emoji를 바로 import할 수 있습니다.

import { Emoji } from 'animated-fluent-emojis/react'
export default function Page() {
return <Emoji id="1f44b_wavinghand" size={64} />
}

서버에서 Emoji는 최종 크기의 비어 있는 플레이스홀더를 렌더링하므로 레이아웃이 밀리지 않습니다. emoji는 hydration 이후에 나타납니다. manifest는 import 시점이 아니라 첫 렌더링 때 브라우저에서 가져오기 때문입니다. onLoad나 onPlaybackEnd 같은 함수는 Server Component에서 전달할 수 없습니다. 그런 경우에는 클라이언트 모듈에서 emoji를 렌더링하세요.

클라이언트 모듈에서 설정과 프리로드하기

configureEmojis와 preloadEmojis는 브라우저에서 실행되므로 Server Component가 아니라 "use client"로 시작하는 모듈에서 호출하세요. 루트 레이아웃에 마운트하는 작은 컴포넌트면 충분합니다.

'use client'
import { configureEmojis, preloadEmojis } from 'animated-fluent-emojis'
configureEmojis({ assetSiteUrl: 'https://emojis.example.com' })
void preloadEmojis()
export function EmojiSetup() {
return null
}

레이아웃 콘텐츠 위에 <EmojiSetup />를 렌더링하세요. 기본 asset site를 사용한다면 configureEmojis 줄을 제거하세요. 첫 Emoji가 렌더링되기 전에 호출해야 합니다. 사용자 지정 origin에 맞는 Content Security Policy는 asset 자체 호스팅하기를, 특정 id의 프리로드는 피커를 위해 프리로드하기를 참고하세요.

Lookup

animated-fluent-emojis/lookup에는 React도 "use client" 배너도 없으므로 Server Component와 route handler에서도 동작합니다. lookup을 참고하세요.