v-for Diretiva de Renderização de Listas

Última atualização: 2026-10-22

v-for Diretiva de Renderização de Listas

O v-for renderiza um grupo de elementos iterando um array ou objeto com a sintaxe item in items; forneça sempre uma key para atualizações eficientes.

GrupoDiretivas
TipoDiretiva
EscopoTemplate
Versão do Vue3.0+
Suporte a SSRSim

📝 Sintaxe

<li v-for="(item, index) in items" :key="item.id">{{ index }} - {{ item.name }}</li>

<!-- iteração de objeto -->
<div v-for="(value, key) in object"></div>

⚙️ Argumentos

expressionDados iteráveis (array/objeto/número/string); o segundo argumento é o índice ou o nome da chave

Retorno:Diretiva, sem valor de retorno

▶ Exemplo

Edite o código abaixo e veja o resultado ao vivo:

Saída:

Three list items render: 1. HTML, 2. CSS, 3. JavaScript.

💡 Pontos-chave

⚠️ Aviso Forneça sempre uma key única (use id, não o índice): índice como key desalinha estados ao inserir/remover itens.
⚠️ Aviso Não ponha v-for e v-if no mesmo elemento: separe com um template externo para o v-for e deixe o v-if no elemento interno.
💡 Dica Métodos de mutação de array (push/splice/sort etc.) são detectados automaticamente; atribuir diretamente arr[0] = x não dispara atualização.
Mais casos em breve.

📚 Tutoriais Relacionados

❓ FAQ

P Por que a key não pode ser escrita de qualquer jeito?
R A key é a forma de o Vue identificar a identidade dos nós: com índice como key, ao inserir/remover, o estado antigo gruda na linha errada.
P Por que arr[0] = x não dispara atualização?
R Os proxies do Vue 3 conseguem rastrear escritas por índice por meio do proxy reativo; arrays comuns não são observados.
P v-for e v-if podem ficar no mesmo elemento?
R Não é recomendado: o v-if roda primeiro e não tem acesso à variável do loop. Envolva com um template externo.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%