Перейти к содержимому
Перейти к содержимому
Animated Fluent Emojis
Меню
Русский

Использование с Next.js

Рендерьте Emoji в App Router, в том числе из Server Components.

Импортируйте таблицу стилей один раз

Таблица стилей содержит keyframes анимации. Без неё эмодзи рендерятся как статичные sprite sheets. Импортируйте её один раз, в корневом layout:

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

Используйте Emoji в Server Component

Бандл начинается с "use client";, поэтому Server Component может импортировать Emoji напрямую, без файла-обёртки:

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

На сервере Emoji рендерит пустой плейсхолдер итогового размера, поэтому вёрстка не сдвигается. Эмодзи появляется после гидратации, потому что manifest загружается в браузере при первом рендере, а не при импорте. Функции вроде onLoad или onPlaybackEnd нельзя передать из Server Component; в этом случае рендерите эмодзи из клиентского модуля.

Настройка и предзагрузка из клиентского модуля

configureEmojis и preloadEmojis выполняются в браузере, поэтому вызывайте их из модуля, который начинается с "use client", а не из Server Component. Достаточно небольшого компонента, подключённого в корневом layout:

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

Отрисуйте <EmojiSetup /> в layout выше содержимого. Уберите строку configureEmojis, чтобы оставить asset site по умолчанию. Вызывайте её до первого рендера Emoji; о Content Security Policy для собственного origin читайте в хостинге ресурсов у себя, а о предзагрузке конкретных id, в предзагрузке для пикера.

Lookup

animated-fluent-emojis/lookup не содержит React и баннера "use client", поэтому работает и в Server Components, и в route handlers. См. lookup.