provide() Fornecer dependências aos descendentes

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

provide() Fornecer dependências aos descendentes

provide() fornece dados no componente ancestral e descendentes de qualquer nível podem obtê-los com inject, evitando passar props camada por camada.

GrupoInjeção de Dependência
TipoAPI
EscopoNo Componente
Versão do Vue3.0+
Suporte a SSRSim

📝 Sintaxe

provide("theme", ref("dark"))
provide("config", readonly(config))   // recomendação: fornecer somente leitura

⚙️ Argumentos

keyString ou Symbol como chave da dependência
valueQualquer valor (refs/objetos reativos mantêm a reatividade)

Retorno:Nada

▶ Exemplo

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

Saída:

The child shows 'Injected theme: dark'.

💡 Pontos-chave

💡 Dica Fornecer dados ref / reactive permite que os descendentes mantenham a reatividade; fornecer valores comuns é um retrato de uma vez só.
⚠️ Aviso Recomenda-se fornecer com readonly: expor diretamente estado gravável permite que qualquer descendente altere os dados do ancestral.
ℹ️ Nota Usar constantes Symbol como chave evita conflitos de nomes (recomendado em projetos grandes/bibliotecas).
Mais casos em breve.

📚 Tutoriais Relacionados

❓ FAQ

P Qual a diferença de props?
R props são passadas explicitamente camada por camada; provide/inject atravessa níveis diretamente, mas a origem dos dados é menos intuitiva que props — adequado para contextos globais como temas e configurações.
P Os dados fornecidos podem ser alterados?
R Podem (descendentes que obtêm a referência podem alterar); por isso recomenda-se fornecer apenas readonly ou funções de alteração.
P Chaves com o mesmo nome conflitam?
R O fornecedor mais próximo prevalece; usar chaves Symbol evita isso completamente.
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%