Um problema comum do React é a comunicação entre componentes. Como dito antes, você só pode passar props de pais para filhos. Isso significa que se você tiver muitos componentes na sua árvore, você terá que lidar com muita passagem de props. Esse conceito é chamado de Prop Drilling
Para evitar esse problema precisamos usar alguma ferramenta. Existem bibliotecas que vão lidar com isso como o Redux ou o React Query.
Mas antes de entrar nessas ferramentas, o React disponibiliza uma API interna chamada de Context que pode resolver esse problema.
Para ilustrar esse problema, vamos implementar na nossa aplicação um novo componente dentro de FeaturedProperties.
Vamos supor que queremos exibir ao lado do título a quantidade de imóveis que temos.
Para isso vamos criar um novo componente NumberOfProperties
Lembre-se de incluir esse componente dentro do FeaturedProperties.
Repare que para sair do App até chegar no componente NumberOfProperties, você teve que passar props várias vezes.
Podemos utilizar a ContextAPI nesse caso. Ela vai servir como um estado global que pode ser compartilhado sem a necessidade de passar via Props.
Configurando a ContextAPI
Dentro do App.jsx você deverá criar um contexto
Depois disso, você deverá usar o Provider para passar os dados para dentro do Context
Agora você pode acessar o Contexto em qualquer lugar com o hook useContext.
No componente NumberOfProperties
Com isso você evita o prop drilling.
Configurando um provider
Para organizar melhor nosso código, podemos separar o nosso Context e suas lógicas em um arquivo a parte
Vamos criar um novo arquivo
E agora podemos remover toda a lógica de dentro do App.jsx e deixar apenas o Provider
Por fim podemos criar um hook customizado para acessar o nosso Context
Agora toda vez que formos acessar os dados do Context, ao invés de fazermos