Template
O elemento <template> define fragmentos de HTML que não são renderizados até serem clonados via JavaScript.
Principais Características
- •O conteúdo dentro do template não é renderizado até ser clonado
- •Permite criar estruturas HTML que podem ser clonadas múltiplas vezes
- •Elementos dentro do template não carregam recursos (imagens, scripts) até serem usados
- •Mantém o HTML organizado separando estrutura de conteúdo dinâmico
Métodos e Propriedades
template.contentRetorna um DocumentFragment com o conteúdo do template para clonagem
cloneNode(true)Cria uma cópia profunda do conteúdo do template para inserção no DOM
Como Funciona
O elemento <template> armazena conteúdo HTML que não é exibido na página. Para usar o conteúdo, você precisa cloná-lo e inserí-lo no DOM via JavaScript.
Conteúdo inerteScripts não executam, imagens não carregam, estilos não aplicam até o template ser clonado e inserido no documento.
Casos de usoIdeal para listas dinâmicas, cards repetitivos, linhas de tabela e qualquer conteúdo que precisa ser criado múltiplas vezes.
Código
import { useRef } from "react";
export default function TemplateExample() {
const templateRef = useRef<HTMLTemplateElement>(null);
const containerRef = useRef<HTMLDivElement>(null);
const addCard = () => {
if (!templateRef.current || !containerRef.current) return;
const clone = templateRef.current.content.cloneNode(true);
containerRef.current.appendChild(clone);
};
return (
<div>
<template ref={templateRef}>
<div className="card">
<h3>Novo Card</h3>
<p>Este card foi criado a partir de um template.</p>
</div>
</template>
<button onClick={addCard}>Adicionar Card</button>
<div ref={containerRef} className="cards-container" />
</div>
);
}Demonstração
Clique no botão para criar novos cards a partir do template. O conteúdo do template é clonado e inserido no DOM dinamicamente.
Novo Card
Este card foi criado a partir de um template HTML nativo.
Cards criados: 0