Compartilhando Estado Entre Componentes com Contexto
Context no React é um recurso poderoso que permite o compartilhamento de dados entre componentes sem a necessidade de passar props explicitamente em cada nível da árvore de componentes. Utilizando o Context, é possível propagar dados pela hierarquia de componentes, tornando-os facilmente acessíveis a qualquer componente, independentemente de sua posição na árvore.
Observação
Para começar, vamos analisar a sintaxe. Forneceremos um guia passo a passo, garantindo a compreensão de cada conceito ao longo do processo. A aplicação de context exige implementação de código específica em diferentes níveis de componentes. Após cobrirmos detalhadamente a sintaxe, avançaremos para um exemplo prático.
Sintaxe:
1º passo: Criar um novo Context utilizando a função createContext() da biblioteca React e atribuí-lo a uma variável. Isso deve ser feito no nível superior da aplicação. Normalmente, realiza-se esse procedimento em um arquivo separado (por exemplo, context.js). Este arquivo será responsável pelo objeto Context.
context.js
import { createContext } from "react";
// Create a new React context using the `createContext` function.
const Context = createContext();
// Export the created context so that it can be used in other parts of the application.
export default Context;
2º passo: No arquivo App, envolvemos todos os componentes que precisam acessar os dados compartilhados com o componente Provider do Context criado. O componente Provider permite definir o valor do contexto e disponibilizá-lo para todos os componentes filhos que consomem esse contexto.
App.jsx
import React from "react";
// Import the `Context` object from `../context`.
import Context from "../context";
// Import child components that need access to the shared data.
import ChildCompOne from "../ChildCompOne/ChildCompOne";
import ChildCompTwo from "../ChildCompTwo/ChildCompTwo";
const App = () => {
return (
// Wrap the child components with `Context.Provider`.
<Context.Provider>
<ChildCompOne />
<ChildCompTwo />
</Context.Provider>
);
};
export default App;
3º passo: No arquivo App, também devemos fornecer os dados do contexto. Isso é feito utilizando a propriedade value do componente Context.Provider. Atribuímos todos os dados necessários à propriedade value.
App.jsx
import React from "react";
import Context from "../context";
import ChildCompOne from "../ChildCompOne/ChildCompOne";
import ChildCompTwo from "../ChildCompTwo/ChildCompTwo";
const App = () => {
// Define any data that you want to share across child components.
const sharedData = "Some shared data";
return (
// Provide the shared data as a value to `Context.Provider`.
<Context.Provider value={sharedData}>
<ChildCompOne />
<ChildCompTwo />
</Context.Provider>
);
};
export default App;
4º passo: Nos componentes filhos (ChildCompOne ou ChildCompTwo), é possível acessar os dados compartilhados utilizando o hook useContext. Para utilizar o hook useContext, é necessário passar o Context criado no arquivo context.js como argumento.
ChildCompOne.jsx
import React, { useContext } from "react";
// Import the `Context` object from "../context"
import Context from "../context";
const ChildComponentOne = () => {
// Use the `useContext` hook to access data from the `Context`
const data = useContext(Context);
// You can now use the shared data in this component
return <div>{data} in the first component</div>;
};
export default ChildComponentOne;
Código completo do aplicativo:
Nota
Reserve um momento para revisar cada etapa, abrindo cada arquivo e pasta, para garantir que compreende claramente o processo. O próximo capítulo continuará com um exemplo combinando Context e hooks. Isso permitirá que você veja como esses conceitos funcionam juntos na prática.
1. Qual é o principal objetivo de usar Context?
2. Qual função é utilizada para criar um novo Context?
3. Como fornecer os dados do contexto para os componentes filhos?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain how to use multiple values in Context?
What are some common use cases for React Context?
How does Context differ from Redux or other state management tools?
Awesome!
Completion rate improved to 2.17
Compartilhando Estado Entre Componentes com Contexto
Deslize para mostrar o menu
Context no React é um recurso poderoso que permite o compartilhamento de dados entre componentes sem a necessidade de passar props explicitamente em cada nível da árvore de componentes. Utilizando o Context, é possível propagar dados pela hierarquia de componentes, tornando-os facilmente acessíveis a qualquer componente, independentemente de sua posição na árvore.
Observação
Para começar, vamos analisar a sintaxe. Forneceremos um guia passo a passo, garantindo a compreensão de cada conceito ao longo do processo. A aplicação de context exige implementação de código específica em diferentes níveis de componentes. Após cobrirmos detalhadamente a sintaxe, avançaremos para um exemplo prático.
Sintaxe:
1º passo: Criar um novo Context utilizando a função createContext() da biblioteca React e atribuí-lo a uma variável. Isso deve ser feito no nível superior da aplicação. Normalmente, realiza-se esse procedimento em um arquivo separado (por exemplo, context.js). Este arquivo será responsável pelo objeto Context.
context.js
import { createContext } from "react";
// Create a new React context using the `createContext` function.
const Context = createContext();
// Export the created context so that it can be used in other parts of the application.
export default Context;
2º passo: No arquivo App, envolvemos todos os componentes que precisam acessar os dados compartilhados com o componente Provider do Context criado. O componente Provider permite definir o valor do contexto e disponibilizá-lo para todos os componentes filhos que consomem esse contexto.
App.jsx
import React from "react";
// Import the `Context` object from `../context`.
import Context from "../context";
// Import child components that need access to the shared data.
import ChildCompOne from "../ChildCompOne/ChildCompOne";
import ChildCompTwo from "../ChildCompTwo/ChildCompTwo";
const App = () => {
return (
// Wrap the child components with `Context.Provider`.
<Context.Provider>
<ChildCompOne />
<ChildCompTwo />
</Context.Provider>
);
};
export default App;
3º passo: No arquivo App, também devemos fornecer os dados do contexto. Isso é feito utilizando a propriedade value do componente Context.Provider. Atribuímos todos os dados necessários à propriedade value.
App.jsx
import React from "react";
import Context from "../context";
import ChildCompOne from "../ChildCompOne/ChildCompOne";
import ChildCompTwo from "../ChildCompTwo/ChildCompTwo";
const App = () => {
// Define any data that you want to share across child components.
const sharedData = "Some shared data";
return (
// Provide the shared data as a value to `Context.Provider`.
<Context.Provider value={sharedData}>
<ChildCompOne />
<ChildCompTwo />
</Context.Provider>
);
};
export default App;
4º passo: Nos componentes filhos (ChildCompOne ou ChildCompTwo), é possível acessar os dados compartilhados utilizando o hook useContext. Para utilizar o hook useContext, é necessário passar o Context criado no arquivo context.js como argumento.
ChildCompOne.jsx
import React, { useContext } from "react";
// Import the `Context` object from "../context"
import Context from "../context";
const ChildComponentOne = () => {
// Use the `useContext` hook to access data from the `Context`
const data = useContext(Context);
// You can now use the shared data in this component
return <div>{data} in the first component</div>;
};
export default ChildComponentOne;
Código completo do aplicativo:
Nota
Reserve um momento para revisar cada etapa, abrindo cada arquivo e pasta, para garantir que compreende claramente o processo. O próximo capítulo continuará com um exemplo combinando Context e hooks. Isso permitirá que você veja como esses conceitos funcionam juntos na prática.
1. Qual é o principal objetivo de usar Context?
2. Qual função é utilizada para criar um novo Context?
3. Como fornecer os dados do contexto para os componentes filhos?
Obrigado pelo seu feedback!