inject() Injetar dependências fornecidas pelo ancestral
Última atualização: 2026-10-22
inject() Injetar dependências fornecidas pelo ancestral
inject() obtém em qualquer componente descendente os dados fornecidos pelo ancestral via provide, com valor padrão opcional como reserva.
| Grupo | Injeção de Dependência |
|---|---|
| Tipo | API |
| Escopo | No Componente |
| Versão do Vue | 3.0+ |
| Suporte a SSR | Sim |
📝 Sintaxe
const theme = inject("theme") // undefined quando não fornecido
const theme = inject("theme", "light") // valor padrão
const theme = inject("theme", () => ref("light")) // valor padrão de fábrica (recomendado, evita instância compartilhada)
⚙️ Argumentos
| key | Chave da dependência (correspondente ao provide) |
|---|---|
| defaultValue | Valor padrão opcional; passar uma função fábrica evita compartilhamento de referência |
Retorno:O valor injetado (quando não fornecido, retorna o valor padrão ou undefined)
▶ Exemplo
Edite o código abaixo e veja o resultado ao vivo:
Saída:
Without a provider it shows 'Theme: light by default'.
💡 Pontos-chave
⚠️ Aviso Não passe literais de objeto/array como valor padrão: vários componentes compartilhariam a mesma instância; use uma função fábrica que devolve um novo objeto.
💡 Dica Ao depender de reatividade, lembre-se de manter a forma de ref depois de injetar: o template desembrulha automaticamente, no script escreva .value.
ℹ️ Nota Só pode ser chamado dentro do setup ou de composables (fase de execução síncrona).
🏷️ Injeção de Dependência relacionados
💡 Casos Relacionados
Mais casos em breve.
📚 Tutoriais Relacionados
❓ FAQ
P Dá erro se o ancestral não forneceu?
R Não dá erro, retorna undefined (com aviso em desenvolvimento); por isso dar valor padrão é mais seguro.
P Depois de injetar, alterá-lo afeta o ancestral?
R O que se obtém é a mesma referência: alterar o .value do ref afeta o estado do ancestral, o que geralmente não é o comportamento esperado.
P Por que usar valor padrão de fábrica?
R Cada chamada gera uma instância independente, evitando que vários componentes contaminem mutuamente os dados padrão.