Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Выпуск функции динамического контента"v9.0.012.06.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Динамические Записи
Динамическая запись (dynamic record) — это файл контента, идентификация которого основана не на последовательном индексе или именованном варианте, а на произвольном наборе пар ключ-значение, объявленных в поле meta. Intlayer использует эти поля в качестве селектора во время выполнения, что позволяет адресовать записи CMS, контент конкретного пользователя или любые данные, ключи которых неизвестны во время сборки.
Объявление динамических записей
Копировать код в буфер обмена
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "product-copy",
meta: {
id: "prod_abc",
userId: "user_123",
},
content: {
name: t({ en: "Widget Pro", fr: "Widget Pro" }),
description: t({ en: "The best widget.", fr: "Le meilleur widget." }),
},
} satisfies Dictionary;
export default dictionary;Копировать код в буфер обмена
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "product-copy",
meta: {
id: "prod_abcd",
userId: "user_123",
},
content: {
name: t({ en: "Widget Lite", fr: "Widget Lite" }),
description: t({ en: "A lighter option.", fr: "Une option plus légère." }),
},
} satisfies Dictionary;
export default dictionary;Использование динамических записей
Все поля meta являются обязательными в селекторе. Опущение любого поля возвращает null и вызывает ошибку TypeScript.
Копировать код в буфер обмена
import { useIntlayer } from "react-intlayer";
export const ProductCopy = ({
productId,
userId,
}: {
productId: string;
userId: string;
}) => {
const content = useIntlayer("product-copy", { id: productId, userId });
// TypeScript гарантирует, что предоставлены как `id`, так и `userId`.
if (!content) return null;
return <p>{content.description}</p>;
};С явным указанием локали
Копировать код в буфер обмена
const content = useIntlayer("product-copy", { id: "prod_abc", userId: "user_123", locale: "ru",});Отсутствие поля meta — ошибка во время компиляции
Копировать код в буфер обмена
// Ошибка типа: отсутствует `userId`const content = useIntlayer("product-copy", { id: "prod_abc" });Режим загрузки (loading mode)
Динамические записи обычно загружаются отложено. Установите importMode для словаря, чтобы настроить это:
Копировать код в буфер обмена
const dictionary = {
key: "product-copy",
importMode: "fetch", // или "dynamic"
meta: { id: "prod_abc", userId: "user_123" },
content: { … },
} satisfies Dictionary;
export default dictionary;Подробную информацию о режимах static, dynamic и fetch см. в разделе оптимизация пакетов.
Типичные варианты использования
- Маркетинговые тексты для отдельных продуктов, управляемые в CMS
- Контент конкретного пользователя или учетной записи
- Любой контент, получаемый на основе непрозрачного runtime ID