Đặt câu hỏi và nhận tóm tắt tài liệu bằng cách tham chiếu trang này và nhà cung cấp AI bạn chọn
Lịch sử phiên bản
- "Phát hành tính năng nội dung động"v9.0.012/6/2026
Nội dung của trang này đã được dịch bằng AI.
Xem phiên bản mới nhất của nội dung gốc bằng tiếng AnhIf 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
Bản Ghi Động
Một bản ghi động (dynamic record) là một tệp nội dung có danh tính không phải là một chỉ mục tuần tự hoặc một biến thể có tên, mà là một tập hợp tùy ý gồm các cặp khóa-giá trị được khai báo trong trường meta. Intlayer sử dụng các trường đó làm bộ chọn tại runtime, giúp có thể định địa chỉ các bản ghi CMS, nội dung dành riêng cho người dùng hoặc bất kỳ nội dung nào có khóa không được biết tại thời điểm build.
Khai báo các bản ghi động
Sao chép mã vào clipboard
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;Sao chép mã vào clipboard
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;Sử dụng bản ghi động
Tất cả các trường meta đều bắt buộc trong bộ chọn. Việc bỏ qua bất kỳ trường nào sẽ trả về null và gây ra lỗi TypeScript.
Sao chép mã vào clipboard
import { useIntlayer } from "react-intlayer";
export const ProductCopy = ({
productId,
userId,
}: {
productId: string;
userId: string;
}) => {
const content = useIntlayer("product-copy", { id: productId, userId });
// TypeScript đảm bảo rằng cả `id` và `userId` đều được cung cấp.
if (!content) return null;
return <p>{content.description}</p>;
};Với ngôn ngữ rõ ràng
Sao chép mã vào clipboard
const content = useIntlayer("product-copy", { id: "prod_abc", userId: "user_123", locale: "vi",});Thiếu trường meta — lỗi compile-time
Sao chép mã vào clipboard
// Lỗi kiểu dữ liệu: thiếu `userId`const content = useIntlayer("product-copy", { id: "prod_abc" });Chế độ tải (loading mode)
Các bản ghi động thường được tải lười (lazy loaded). Hãy thiết lập importMode trên từ điển để kiểm soát điều này:
Sao chép mã vào clipboard
const dictionary = {
key: "product-copy",
importMode: "fetch", // hoặc "dynamic"
meta: { id: "prod_abc", userId: "user_123" },
content: { … },
} satisfies Dictionary;
export default dictionary;Xem tối ưu hóa gói bundle để biết thêm chi tiết về chế độ static, dynamic và fetch.
Các trường hợp sử dụng điển hình
- Nội dung tiếp thị trên mỗi sản phẩm được quản lý trong CMS
- Nội dung dành riêng cho người dùng hoặc tài khoản cụ thể
- Bất kỳ nội dung nào được xác định bằng một ID runtime ẩn