React의 useContext
컨텍스트 API 이해
useContext
를 이해하려면 먼저 컨텍스트 API를 이해해야 합니다. 아시다시피 react는 state를 사용하여 데이터를 저장하고 props를 사용하여 한 구성 요소에서 다른 구성 요소로 데이터를 전달합니다. 이 접근 방식은 관련된 구성 요소가 거의 없을 때 잘 작동하지만 구성 요소 수가 증가하면 더 복잡해집니다. 깊게 중첩된 구성 요소가 관련된 경우 우리는 계층 구조에서 훨씬 아래에 있는 단일 구성 요소에 소품을 전달하기 위해 소품 드릴을 사용하게 됩니다.컨텍스트 API는 이 접근 방식을 단순화합니다. 컨텍스트 API를 사용하여 컨텍스트 내의 모든 구성 요소에서 사용할 수 있어야 하는 특정 데이터를 지정할 수 있으므로 소품 드릴이나 다른 접근 방식을 통해 데이터를 전달할 필요가 없습니다. 컨텍스트 API를 사용하여 전달된 데이터는 해당 특정 응용 프로그램 내의 모든 구성 요소에서 사용할 수 있습니다. 다음은 예입니다.
const ResultContext = React.createContext();
export const ResultContextProvider = ({ children }) => {
const [results, setResults] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const [searchTerm, setSearchTerm] = useState('tesla');
return (
<ResultContext.Provider value={{ getResults, results, searchTerm, setSearchTerm, isLoading }}>
{children}
</ResultContext.Provider>
);
};
위의 예에서 우리는
React.createContext()
를 사용하여 새로운 컨텍스트를 생성했습니다. 이것은 우리에게 공급자 부분과 소비자 부분을 제공합니다.공급자 부분은 내부에 중첩된 모든 구성 요소에 값을 제공합니다. 위의 예에서 값은
getResults
, results
, searchTerm
, setSearchTerm
및 isLoading
가 포함된 단일 개체입니다.두 번째 부분은 소비자입니다. 컨텍스트의 값에 액세스할 수 있도록 소비자의 구성 요소 코드를 래핑해야 합니다. 소비자가 있는 구성 요소의 JSX를 래핑해야 코드 계층이 추가됩니다.
useContext
후크를 사용하여 기능적 구성 요소에서 이러한 모든 혼란을 피할 수 있습니다.useContext 후크
useContext
사용을 시작하려면 먼저 다음과 같이 가져와야 합니다.
import React, { createContext, useContext } from 'react';
또한 컨텍스트 API와 유사한 방식으로 컨텍스트 제공자를 설정할 수 있습니다.
const ResultContext = createContext();
export const ResultContextProvider = ({ children }) => {
const [results, setResults] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const [searchTerm, setSearchTerm] = useState('tesla');
return (
<ResultContext.Provider value={{ getResults, results, searchTerm, setSearchTerm, isLoading }}>
{children}
</ResultContext.Provider>
);
};
useContext
후크의 도움으로 컨텍스트 API의 소비자 부분을 피할 수 있습니다. 다음과 같은 방법으로 할 수 있습니다.
import { useResultContext } from '../contexts/ResultContextProvider';
const Navbar = ({darkTheme, setDarkTheme}) => {
const {results ,searchTerm} = useResultContext();
return (
<div className='flex flex-row text-center '>
<div className='text-sm text-gray-400 text-center'>{results}</div>
<div className='text-sm text-gray-400 text-center'>{searchTerm}</div>
</div>
)
}
export default Navbar
위의 예에서 직접 가져오기
useResultContext
하고 필요에 따라 사용할 수 있는 모든 컨텍스트 값을 제공합니다.결론
useContext
후크는 기존 컨텍스트 API와 비교하여 코드를 단순화하여 작업하는 것을 즐겁게 만듭니다.
Reference
이 문제에 관하여(React의 useContext), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nandodkaramogh/usecontext-in-react-2og4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)