Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Como o hook customizado useCarrinhoContext() conhece os valores de contexto?

Olá!

Nessa aula, foi criado um hook customizado, useCarrinhoContext(), dentro do arquivo Carrinho.js.

Esse hook faz uso do contexto atribuído à const CarrinhoContext, cujos valores de contexto foram indicados em outra const, a CarrinhoProvider. Todas são do mesmo arquivo, Carrinho.js.

Nas aulas anteriores, foi explicado que um componente tem acesso aos valores de um contexto, quando ele é subcomponente do provider. Neste caso, os componentes precisam ser subcomponentes de <CarrinhoProvider /> para ter acesso aos valores de CarrinhoContext.

Mas e no caso do hook customizado? Por que ele consegue acessar os valores de CarrinhoProvider? Eu tenho duas suposições:

  1. O hook consegue acessar os valores por estar dentro do mesmo arquivo Carrinho.js, em que também estão definidos CarrinhoContext e CarrinhoProvider;
  2. O hook consegue acessar os valores por que ele é chamado no componente <Produto />, que é subcomponente de <Feira />, o qual, por sua vez, é subcomponente de <CarrinhoProvider />.

Por favor, poderiam informar se alguma dessas suposições está correta? Eu tendo a achar que a 2 seria a explicação, mas ainda não tenho segurança nem conhecimento suficiente para ter certeza. Para mim é difícil entender "quem vê o que" quando há essa separação de responsabilidades...

Obrigado!

1 resposta
solução!

Oi Matheus, tudo bem?

Desculpe a demora em retornar.

Sua segunda suposição está correta! O hook useCarrinhoContext() consegue acessar os valores de CarrinhoContext por estar sendo chamado dentro de um componente que é subcomponente de <CarrinhoProvider />. Como <Produto /> é um subcomponente de <Feira />, que por sua vez é um subcomponente de <CarrinhoProvider />, ele tem acesso aos valores de CarrinhoContext.

Por isso, é importante manter a hierarquia dos componentes para garantir que o contexto seja compartilhado corretamente.

Espero ter ajudado a esclarecer suas dúvidas!

Um abraço e bons estudos.