Привет, мир
\"}\nПривет Мир
\");\n ```\n\n #### Утилита `renderHTML()`\n\n Утилита для рендеринга вне компонентов.\n\n ```tsx\n import { renderHTML } from \"react-intlayer/html\";\n\n const jsx = renderHTML(\"Привет
\", { components: { p: 'div' } });\n ```\n\nПривет, мир
\")}\n ```\n\n #### Утилита `renderHTML()`\n\n ```svelte\n \n\n {@html renderHTML(\"Привет, мир
\")}\n ```\n\nПривет, мир
\"}\nПривет, мир
\")}Привет, мир
\")}Привет, мир
\"}\nПривет, мир
\")}Привет, мир
\")}Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Add `intlayerHTML` plugin object; use `app.use(intlayerHTML)` instead of `app.use(installIntlayerHTML)`"v8.5.024.03.2026
- "Перенос импортов из {{framework}}-intlayer в {{framework}}-intlayer/html"v8.5.024.03.2026
- "Добавлены HTMLRenderer / useHTMLRenderer / renderHTML"v8.0.022.01.2026
- "Добавлена поддержка парсинга HTML"v8.0.020.01.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHubКопировать Markdown документа в буфер обмена
HTML-контент / HTML в Intlayer
Intlayer поддерживает HTML-контент, позволяя встраивать насыщенный, структурированный контент в ваши словари. Этот контент может отображаться с помощью стандартных HTML-тегов или заменяться на пользовательские компоненты во время выполнения.
Объявление HTML-контента
Вы можете объявлять HTML-контент с помощью функции html или просто как строку.
Используйте функцию html, чтобы явно объявлять HTML-контент. Это гарантирует корректную сопоставляемость стандартных тегов, даже если автоматическое обнаружение отключено.
Копировать код в буфер обмена
import { html, type Dictionary } from "intlayer";const htmlDictionary = { key: "app", contentAutoTransformation: true, // можно задать в файле конфигурации content: { myHtmlContent: html("<p>Привет <strong>Мир</strong></p>"), },} satisfies Dictionary;export default htmlDictionary;Узел html()
Функция html(), это новая возможность в Intlayer v8, которая позволяет явно определять HTML-контент в ваших словарях. Хотя Intlayer часто может автоматически определять HTML-контент, использование функции html() дает несколько преимуществ:
- Типобезопасность: Функция
html()позволяет определять ожидаемые пропсы для пользовательских компонентов, обеспечивая лучшее автодополнение и проверку типов в вашем редакторе. - Явное объявление: Это гарантирует, что строка всегда будет рассматриваться как HTML, даже если она не содержит стандартных HTML-тегов, которые могли бы активировать автоматическое определение.
- Определение пользовательских компонентов: Вы можете передать второй аргумент в
html(), чтобы определить пользовательские компоненты и ожидаемые типы их пропсов.
Копировать код в буфер обмена
import { html } from "intlayer";const myContent = html( "<MyCustomComponent title='Привет'>Мир</MyCustomComponent>", { MyCustomComponent: { title: "string", children: "node", }, });При использовании метода .use() для HTML-узла предоставленные вами компоненты будут проверяться на соответствие определению, указанному в функции html() (если оно доступно).
Рендеринг HTML
Рендеринг можно осуществлять автоматически с помощью системы контента Intlayer или вручную с использованием специализированных инструментов.
Автоматический рендеринг (с использованием useIntlayer)
Когда вы получаете контент через useIntlayer, HTML-узлы уже подготовлены для рендеринга.
HTML-узлы можно рендерить напрямую как JSX. Стандартные теги работают автоматически.
Копировать код в буфер обмена
import { useIntlayer } from "react-intlayer";const AppContent = () => { const { myHtmlContent } = useIntlayer("app"); return <div>{myHtmlContent}</div>;};Используйте метод .use() для предоставления пользовательских компонентов или переопределения тегов:
Копировать код в буфер обмена
{myHtmlContent.use({ p: (props) => <p className="prose" {...props} />, CustomLink: ({ children }) => <a href="/details">{children}</a>,})}Глобальная конфигурация с HTMLProvider
Вы можете настроить рендеринг HTML глобально для всего приложения. Это удобно для определения пользовательских компонентов, которые должны быть доступны во всём HTML-контенте.
Копировать код в буфер обмена
import { HTMLProvider } from "react-intlayer/html";export const AppProvider = ({ children }) => ( <HTMLProvider components={{ p: (props) => <p className="prose" {...props} />, CustomLink: ({ children }) => <a href="/details">{children}</a>, }} > {children} </HTMLProvider>);Вы также можете использовать свой собственный рендерер HTML:
Копировать код в буфер обмена
import { HTMLProvider } from "react-intlayer/html";export const AppProvider = ({ children }) => ( <HTMLProvider renderHTML={async (html) => { const { renderHTML } = await import('react-intlayer/html'); return renderHTML(html); }} > {children} </HTMLProvider>);Динамический импорт рендерера HTML - хороший способ уменьшить размер бандла вашего приложения.
Ручной рендеринг и расширенные инструменты
Если вам нужно рендерить сырые HTML-строки или иметь больший контроль над маппингом компонентов, используйте следующие инструменты.
Компонент <HTMLRenderer />
Копировать код в буфер обмена
import { HTMLRenderer } from "react-intlayer/html";<HTMLRenderer components={{ p: MyCustomP }}> {"<p>Привет, мир</p>"}</HTMLRenderer>Хук useHTMLRenderer()
Возвращает предварительно настроенную функцию рендеринга.
Копировать код в буфер обмена
import { useHTMLRenderer } from "react-intlayer/html";const renderHTML = useHTMLRenderer({ components: { strong: (props) => <strong {...props} className="text-red-500" /> }});return renderHTML("<p>Привет <strong>Мир</strong></p>");Утилита renderHTML()
Утилита для рендеринга вне компонентов.
Копировать код в буфер обмена
import { renderHTML } from "react-intlayer/html";const jsx = renderHTML("<p>Привет</p>", { components: { p: 'div' } });Справочник опций
Эти опции могут быть переданы в HTMLProvider, HTMLRenderer, useHTMLRenderer и renderHTML.
Открыть таблицу в модальном окне для четкого просмотра всех данных
| Опция | Тип | По умолчанию | Описание |
|---|---|---|---|
components | Record<string, any> | {} | Отображение HTML-тегов или имён пользовательских компонентов на соответствующие компоненты. |
renderHTML | Function | null | Пользовательская функция рендеринга для полной замены стандартного HTML-парсера (только для провайдеров Vue/Svelte). |
Примечание: для React и Preact стандартные HTML-теги предоставляются автоматически. Вам нужно передавать проп components только если вы хотите переопределить их или добавить пользовательские компоненты.