Provider Pattern Padrão Provider

Última atualização: 2026-11-03

Provider Pattern Padrão Provider

O padrão Provider empacota os dados e os métodos que os alteram em um componente Provider com estado mais um hook personalizado correspondente: o estado vive dentro de useState ou useReducer, é repassado por meio de um Context, e o mundo externo lida apenas com leituras e escritas useXxx(). O Provider possui o estado e decide onde ele se aplica, o hook expõe uma API limpa, e os componentes no meio nunca ficam sabendo que um contexto existe.

GrupoPadrões de Componentes
TipoPadrão

ℹ️ Informação O editor transpila JSX para JavaScript e renderiza a UI real na sandbox; os componentes são montados automaticamente — sem render manual.

📝 Sintaxe

const Ctx = createContext(null)

export function AppProvider({ children }) {
  const [state, setState] = useState(initial)
  return <Ctx.Provider value={{ state, setState }}>{children}</Ctx.Provider>
}

export const useApp = () => useContext(Ctx)   // the matching read hook

Retorna:Sem valor de retorno; esta entrada descreve um padrão de codificação e não uma função.

▶ Exemplo

O exemplo roda direto: renderiza automaticamente ao expandir e edições valem na hora.

Saída:

Depois de clicar no botão, o carrinho lê imediatamente "Cart (1): Apple" — o estado é gerenciado em CartProvider enquanto ItemList o lê e escreve por meio de useContext.

💡 Pontos-chave

💡 Dica Provider + useContext + um hook personalizado é o trio padrão para um estado global leve feito à mão; projetos pequenos não precisam de Redux.
ℹ️ Informação Coloque tanto o estado quanto a função de atualização no valor para que os consumidores possam ler e escrever de uma só vez; posicione o Provider no menor ancestral comum que dele precisa.
⚠️ Aviso Quando o valor é um objeto inline, cada renderização do Provider renderiza de novo todos os consumidores — estabilize-o com useMemo.
Mais casos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

P Em que nível da árvore de componentes o Provider deve ficar?
R No menor ancestral comum de todos os consumidores; quanto menor o escopo, menos re-renderizações desnecessárias ele causa.
P Por que envolver o valor em useMemo?
R Um objeto inline é uma nova referência a cada renderização, o que força todo consumidor a renderizar de novo; useMemo armazena a referência em cache e evita isso.
P Como o padrão Provider difere do Redux?
R O padrão Provider é um recurso nativo do React que cabe a aplicações de pequeno e médio porte; o Redux acrescenta um pipeline uniforme de actions, middleware e ferramentas de depuração para aplicações grandes.
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%