Creation:2026-01-20Last update:2026-01-22

    Konten HTML / HTML di Intlayer

    Intlayer mendukung konten HTML, memungkinkan Anda menyematkan konten yang kaya dan terstruktur dalam dictionaries Anda. Konten ini dapat dirender dengan tag HTML standar atau digantikan dengan komponen kustom saat runtime.

    Mendeklarasikan Konten HTML

    Anda dapat menyatakan konten HTML menggunakan fungsi html atau cukup sebagai string.

    Gunakan fungsi html untuk secara eksplisit menyatakan konten HTML. Ini memastikan tag standar dipetakan dengan benar bahkan jika deteksi otomatis dinonaktifkan.

    htmlDictionary.content.ts
    import { html, type Dictionary } from "intlayer";const htmlDictionary = {  key: "app",  contentAutoTransformation: true, // dapat diatur di file konfigurasi  content: {    myHtmlContent:  html("<p>Hello <strong>World</strong></p>"),  },} satisfies Dictionary;export default htmlDictionary;

    Node html()

    Fungsi html() adalah fitur baru di Intlayer v8 yang memungkinkan Anda menentukan konten HTML secara eksplisit di kamus Anda. Meskipun Intlayer sering kali dapat mendeteksi konten HTML secara otomatis, penggunaan fungsi html() memberikan beberapa keuntungan:

    • Keamanan Tipe: Fungsi html() memungkinkan Anda menentukan props yang diharapkan untuk komponen kustom, memberikan pelengkapan otomatis dan pemeriksaan tipe yang lebih baik di editor Anda.
    • Deklarasi Eksplisit: Ini memastikan bahwa string selalu diperlakukan sebagai HTML, bahkan jika string tersebut tidak berisi tag HTML standar yang akan memicu deteksi otomatis.
    • Definisi Komponen Kustom: Anda dapat memberikan argumen kedua ke html() untuk menentukan komponen kustom dan tipe prop yang diharapkan.
    typescript
    import { html } from "intlayer";const myContent = html(  "<MyCustomComponent title='Halo'>Dunia</MyCustomComponent>",  {    MyCustomComponent: {      title: "string",      children: "node",    },  });

    Saat menggunakan metode .use() pada node HTML, komponen yang Anda berikan akan diperiksa terhadap definisi yang diberikan dalam fungsi html() (jika tersedia).


    Merender HTML

    Proses merender dapat ditangani secara otomatis oleh sistem konten Intlayer atau secara manual menggunakan alat khusus.

    Perenderan Otomatis (menggunakan useIntlayer)

    Saat Anda mengakses konten melalui useIntlayer, node HTML sudah disiapkan untuk dirender.

    Node HTML dapat dirender langsung sebagai JSX. Tag standar bekerja secara otomatis.

    App.tsx
    import { useIntlayer } from "react-intlayer";const AppContent = () => {  const { myHtmlContent } = useIntlayer("app");  return <div>{myHtmlContent}</div>;};

    Gunakan metode .use() untuk menyediakan komponen kustom atau menimpa tag:

    tsx
    {myHtmlContent.use({  p: (props) => <p className="prose" {...props} />,  CustomLink: ({ children }) => <a href="/details">{children}</a>,})}

    Konfigurasi Global dengan HTMLProvider

    Anda dapat mengonfigurasi rendering HTML secara global untuk seluruh aplikasi Anda. Ini ideal untuk mendefinisikan komponen kustom yang harus tersedia di semua konten HTML.

    AppProvider.tsx
    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>);

    Merender Manual & Alat Lanjutan

    Jika Anda perlu merender string HTML mentah atau memiliki kontrol lebih atas pemetaan komponen, gunakan alat berikut.

    Komponen <HTMLRenderer />

    Merender string HTML dengan komponen tertentu.

    tsx
    import { HTMLRenderer } from "react-intlayer/html";<HTMLRenderer components={{ p: MyCustomP }}>  {"<p>Hello World</p>"}</HTMLRenderer>

    useHTMLRenderer() Hook

    Dapatkan fungsi renderer yang telah dikonfigurasi sebelumnya.

    tsx
    import { useHTMLRenderer } from "react-intlayer/html";const renderHTML = useHTMLRenderer({  components: { strong: (props) => <strong {...props} className="text-red-500" /> }});return renderHTML("<p>Hello <strong>World</strong></p>");

    Utilitas renderHTML()

    Utilitas mandiri untuk merender di luar komponen.

    tsx
    import { renderHTML } from "react-intlayer/html";const jsx = renderHTML("<p>Hello</p>", { components: { p: 'div' } });

    Referensi Opsi

    Opsi-opsi ini dapat diteruskan ke HTMLProvider, HTMLRenderer, useHTMLRenderer, dan renderHTML.

    Opsi Tipe Default Deskripsi
    components Record<string, any> {} Peta dari tag HTML atau nama komponen kustom ke komponen.
    renderHTML Function null Fungsi render kustom untuk menggantikan sepenuhnya parser HTML default (Hanya untuk provider Vue/Svelte).
    Catatan: Untuk React dan Preact, tag HTML standar disediakan secara otomatis. Anda hanya perlu meneruskan prop components jika ingin menimpanya atau menambahkan komponen kustom.