๐ ์ปจํ ์คํธ API

Context API รฉ uma maneira super bacana de passar estados pelos componentes sem precisar utilizar
props, qualquer parte da sua aplicaรงรฃo์์ atualizaรงรฃo desse estado em qualquer parte da sua aplicaรงรฃo๋ฅผ ํ์ฉํฉ๋๋ค. Claro que em algumas situaรงรตes รฉ mais adequado o uso das props, mas, ร medida que vamos aumentando ร rvore de elementos, pode ficar bem chatinho transportar essas informaรงรตes sem o uso de um gerenciador de estado global. ์ด ๊ฒฝ์ฐ์๋ Context API๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๐

๐พ Em resumo, รฉ sรณ imaginar que a Context API รฉ um portal entre os componentes por onde vocรช vai compartilhar as informaรงรตes, independente se sรฃo elementos que se comunicam ao nรฃo. ๋ฒจ๋ ์ง๋?

โ ์ฝ๋ชจ ํ์ฉ์
Criar um diretรณrio prรณprio para colocar o seu contexto.

index.jsx e dentro dele importar o createContext do react.import React, {createContext, useState} from 'react';
export const MovieContext = createContext({});
๐พ Detalhe: cada objeto Contexto (context) vem com um bicho chamado Provider e รฉ atravรฉs dele que vocรช vai conseguir aplicar mudanรงas no seu context. E isso acontece porque ele aceita uma
props ~eu nao disse que nao usarรญamos props asuhuahs~ e todos os componentes filhos terรฃo acesso a ela. MovieProvider์ ๋ํ ๊ณต๊ธ์ ์ฑ๋์ด ์๋ ๊ฒฝ์ฐ์๋ ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ต๋๋ค.export const MovieProvider = (props) => {
const [ movies, setMovies] = useState(()=>{
api.get('http://localhost:8000/home')
.then(response => { setMovies(response.data)
.catch(err => console.log(err))
});
const [ genres, setGenres ] = useState(()=>{
api.get('http://localhost:8000/home/genres')
.then(response => setGenres(response.data))
.catch(err => console.log(err))
});
const [ selected, setSelected ] = useState();
return(
<MovieContext.Provider
value={{
movies,
genres,
selected,
setSelected,
}}
>
{props.children}
</MovieContext.Provider>
)
}
provider no app, e utilizรก-lo bem no topo da hierarquia de componentes para criar a sua camada de estados.import React from 'react';
import { MovieProvider } from './providers/index.jsx';
import Routes from './routes/index.jsx'
function App() {
return (
<MovieProvider>
<GlobalStyle />
<Routes />
</MovieProvider>
);
}
export default App;
import React, { useContext, useState } from 'react'
import { MovieContext } from '../../providers/index.jsx';
import Header from '../../components/Header'
import MovieList from '../../components/MovieList'
const Home = () => {
const { movies, genres } = useContext(MovieContext);
return (
<>
<Header page="home" className="clicked" ></Header>
{ genres ? genres.map(genre =>
<MovieList title={genre.title} movies={movies}/>
) : null}
</>
)
}
export default Home;
Prontinho, passar perrengue com props nunca mais! ๐
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ ์ปจํ ์คํธ API), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/luanalessa/context-api-133eํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค